web_reg_find()--常用函数
注册在HTML页面上搜索文本字符串。(帮我们注册并去查找HTML页面上的文本字符串)
int web_reg_find(constchar * attribute_list,LAST);
参数说明:
object一个表达式,求值到类型为WebApi的对象。通常是web for Java和VisualBasic。另请参见函数和常量前缀。
attribute_list属性以Name= Value对传递,例如:“Text = string”。有关每个属性的详细信息,请参阅属性列表。
LAST指示参数列表结束的标记。
一般信息:
web_reg_find函数注册在由下一个动作函数(例如web_url)检索的网页上搜索文本字符串的请求。
此功能可帮助您通过搜索所需的文本字符串来验证您收到的页面是否是所需的页面。例如,您可以搜索文本“欢迎”,以检查您的主页是否正确打开。您可以检查单词“错误”,以检查浏览器是否遇到错误。您还可以使用此功能注册一个请求来计算文本出现的次数。
如果检查失败,则在下一个操作函数执行后报告错误。此函数仅注册请求,但不执行它们。因此,web_reg_find的返回值仅指示注册成功,而不是如果检查成功。
您可以搜索文本或文本周围的字符串。不要同时指定文本和前缀 - 后缀对。
此功能可用于基于HTML和基于URL的脚本(请参阅录制选项>录制选项卡)。它在缓冲器到达之前注册搜索请求,因此缓冲器在它们到来时被扫描。这导致更有效的脚本具有更好的性能。
要全局搜索所有后续操作函数(不仅仅是以下操作),请使用web_global_verification。 web_global_verification函数可用于检测未由HTTP状态代码表示的应用程序级错误。要查找由HTTP状态代码表示的错误,请使用web_get_int_property。
属性列表:
属性以Name = Value对传递,例如:“Text = string”。需要文本,或TextPfx和TextSfx。其余属性是可选的。
Text:要搜索的文本字符串。文本是一个非空的,以空字符结尾的字符串。您可以使用文本标志进一步自定义搜索。
文本搜索已知字符串。当字符串不是预先知道的时候,使用TextPfx和TextSfx,但是你知道之前和之后的字符串。例如,当向用户发出用户名时,服务器可能返回“您的新用户名为<用户名>”。用户名更改,但要确认已发出名称,则足以确认有一些字符串前面有“您的新用户名是”,后跟a“.”。
如果未指定文本,则必须指定以下两个属性。您可以通过使用带有这些属性的文本标志进一步自定义搜索。
TextPfx:搜索的左边界。这是您正在搜索的文本字符串之前的文本。
TextSfx:搜索的右边界。这是紧跟在您要搜索的文本字符串之后的文本。
搜索:搜索的范围 - 在哪里搜索字符串。可能的值是标题(仅搜索标题),正文(仅搜索正文数据),Noresource(仅搜索HTML正文,不包括标题和资源)或全部(搜索正文,标题和资源)。默认值为BODY。
SaveCount:找到的匹配项数,存储在参数中。
SaveCount属性分配对参数找到的匹配数。要使用此属性,请指定“SaveCount = param”。当执行检查时,param被分配一个以null结束的字符串,表示一个数值。
当使用SaveCount参数并且未使用Fail参数时,无论是否找到文本,检查都不会失败。要检查是否已找到文本,请检查SaveCount参数的值。如果为“0”,则找不到字符串。
如果同时使用SaveCount和Fail,则指定的失败处理选项与SaveCount一起工作。因此,如果SaveCount与“Fail= NotFound”一起使用并且找到文本,则会为SaveCount参数分配出现次数,并且检查成功。如果未找到文本,则SaveCount参数将分配为“0”,并且检查失败。当然,如果没有找到文本并且指定了“Fail = NotFound”,那么参数的值“0”仅在选择了运行时设置“继续运行错误”时有用。
分配给参数的值在迭代之间保留,直到下一次迭代的web_reg_find之后的第一个操作函数。一旦脚本执行在下一次迭代的web_reg_find之后的第一个动作函数,计数就被更新。或者,可以使用lr_save_string函数更改当前嵌套结束时的参数值,例如使用lr_save_string(“0”,“Count”)。
失败:设置检查失败时的条件的处理方法。
失败可以是“Found”或“NotFound”。默认值为NotFound。
“Fail = NotFound”表示在找不到文本时发生错误。在搜索您希望在Web请求成功时查找的文本时,使用NotFound。
“Fail = Found”表示当找到文本时检查失败。您可以使用Found,例如,搜索单词“Error”。如果找到“错误”,则Web请求未成功,并且您希望检查失败。
当使用TextPfx和TextSfx指定“Fail = Found”,并且多次找到左边界和右边界时,每个匹配都作为错误发出,直到在运行时设置>首选项>高级选项中配置的最大错误数。后续匹配记录为参考消息。
有关将Save与SaveCount一起使用的信息,请参阅SaveCount。
ID:将日志文件中的条目与对web_reg_find的调用相关联的标识字符串。参见示例。
RelFrameId:相对帧ID,例如:1.2
注意:GUI级别脚本不支持RelFrameID。
示例:web_reg_find
在示例1中,web_reg_find搜索文本字符串“Welcome”。如果未找到该字符串,它将失败,并且脚本执行停止。
在示例2中,基于示例1,显示了脚本中的错误处理。
在示例3中,web_reg_find搜索文本字符串“Error”。如果找到字符串,它会失败,脚本执行停止。
在示例4中,web_reg_find搜索文本字符串“ABC”。脚本执行的路径取决于是否找到字符串。
在示例5中,ID参数“XYZ”将对web_reg_find的调用与日志文件中的行相关联。
Example 1
在以下示例中,web_reg_find搜索文本字符串“Welcome”。如果未找到该字符串,它将失败,并且脚本执行停止。
// Run the Web Tours sample
web_url("MercuryWebTours",
"URL=http://localhost/MercuryWebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST );
// Set up check for successful login by looking for "Welcome"
web_reg_find("Text=Welcome",
LAST );
// Now log in
web_submit_form("login.pl",
"Snapshot=t2.inf",
ITEMDATA,
"Name=username","Value=jojo", ENDITEM,
"Name=password","Value=bean", ENDITEM,
"Name=login.x","Value=35", ENDITEM,
"Name=login.y","Value=14", ENDITEM,
LAST );
Example 2
示例2与示例1相同,但是因为使用了保存计数,故障时脚本执行不会停止。相反,错误在代码中处理。
// Run the Web Tours sample
web_url("MercuryWebTours",
"URL=http://localhost/MercuryWebTours/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST );
// Set up check for successful login by looking for "Welcome"
web_reg_find("Text=Welcome",
"SaveCount=Welcome_Count",
LAST );
// Now log in
web_submit_form("login.pl",
"Snapshot=t2.inf",
ITEMDATA,
"Name=username","Value=jojo", ENDITEM,
"Name=password","Value=bean", ENDITEM,
"Name=login.x","Value=35", ENDITEM,
"Name=login.y","Value=14", ENDITEM,
LAST );
// Check result
if (atoi(lr_eval_string("{Welcome_Count}"))> 0){
lr_output_message("Logon successful.");
}
else{
lr_error_message("Log onfailed");
return(0);
}
Example 3
在以下示例中,web_reg_find搜索文本字符串“Error”。如果找到字符串,它会失败,脚本执行停止。
web_reg_find("Text/IC=Error", "Fail=Found", LAST );
web_url("Step", "URL=...", LAST );
Example 4
在以下示例中,web_reg_find搜索文本字符串“ABC”。如果找不到字符串,则脚本执行Action A.如果字符串被找到一次或多次,它将执行Action B.
web_reg_find("Text=ABC", "SaveCount=abc_count", LAST );
web_url("Step", "URL=...", LAST );
if (strcmp(lr_eval_string("{abc_count}"), "0") == 0)
Action A
else
Action B
Example 5
在以下示例中,ID参数“XYZ”将对web_reg_find的调用与日志文件中的行相关联。当在日志文件中查找记录调用web_reg_find的条目时,搜索字符串“XYZ”将使它更容易。
web_reg_find("Text=mitcham", "ID=XYZ", LAST );
web_url("web_url", "URL=http://lazarus/","TargetFrame=",
"Resource=0","Referer=", LAST );
日志文件中的条目将是以下之一,具体取决于web_reg_find是否成功找到文本“mitcham”:
Action1.c(12): Matched web_reg_find with "Fail=NotFound" ("XYZ").Text "mitcham" (count=78)
Action1.c(10): Error: No match for web_reg_find with"Fail=NotFound" ("XYZ"). Text "mitcham"