上面介绍的所有这些函数都定义在文件“routines.s”中(见资源)。若要使用它们,请在Robot中创建一个新的空脚本然后将routines.s的内容粘贴进去。在其他脚本中,只要在文件头中添加下面这一行就可以使用上面介绍的函数了:
#include “newscript.s” |
请将“newscript”替换为实际的文件名。
客户端数据构造的模拟
一个具备完整功能的VU脚本应该具备模仿浏览器所有相关行为的能力。举个简单的例子,仔细阅读列表1中的脚本片断会发现,把“Content-Length”这个头参数的值静态地设置为55是不恰当的,原因是实际的内容长度取决于可能出现的使用关联的动态值或者数据池的FORM参数值。因此,更好的做法是模仿浏览器在运行时计算实际的内容长度,而不是使用录制脚本时记录的静态值。列表7给出了改进后的脚本。
列表7. 改进后的脚本
{
string formData;
formData = "username=admin&password=admin&login-form-type="
+ http_url_encode(SgenRes_005[0]) + "";
}
http_request ["t3079"]
"POST /pkmslogin.form HTTP/1.1\r\n"
"Accept: image/gif, image/x-xbitmap, |
当HTML页面中包含JavaScript代码或者嵌入式组件例如Java Applet和ActiveX控件时,客户端的模拟就变得更为重要,因为它们常会被用来根据某一逻辑响应用户的操作在客户端动态地生成一些数据的值。客户端模拟的最直接有效的方法就是用VU语言实现由网页中的JavaScript或者嵌入式组件所实现的数据构造过程。但在这之前,通常需要先抽取构造所需的输入,上一节中介绍的函数会有助于此。举个例子,列表8中的HTML页面片断使用JavaScript来根据一个员工的名字动态地生成一个编码后的URL,列表9中的VU脚本片断模拟了这一URL的构造过程。
… Jack Lee |
…
#include "routines.s"
…
{
string employeeName;
employeeName = getStringByBoundaries(_response, |
总结
Web应用中的连续页面存在数据关联是很普遍的现象。使用Rational Robot通过或多或少的人工干预可以正确地处理这些关联从而产生更完善的VU脚本。本文在分析了常见形式的数据关联的基础上介绍了其相应的处理方法。

