自认为不是个勤快的人,每每
工作完后不知总结,因此丢三落四的。
关联函数web_reg_save_param
// web_reg_save_param 是一个注册类型
// 的函数。它注册一个请求,以在检索到的
// 网页中查找并保存一个文本字符串。只有
// 在执行了下一个操作函数(如 web_url)后
// 才会执行该操作。
int web_reg_save_param (const char *ParamName, <List of Attributes>, LAST);
web_reg_save_param("参数名","LB=左边界‘,"RB=右边","Ord=All",LAST);
//当参数有多个值时,加上"Ord=All”后可获取所有的数值。注册成功后,{参数名_count}表示取得的数值个数,{参数名_1}为第一个数值,{参数名_2}为第二个数值。
===》关联函数要在执行了下一个操作函数(如 web_url)后才会执行该操作。所以关联函数要写在操作函数之前
示例1:
//要闻
web_reg_save_param("getid1",
"LB=id\":\"",
"RB=\",\"imgUrl",
"Ord=All",
LAST);
web_url("web_url",
"URL=http://{URL}/web/api/news/importnews/list/1.json?pageSize=2",
"TargetFrame=",
"Resource=0",
"Referer=",
"Mode=HTML",
LAST);
====》重点关注"Ord=All",该参数作用为指定获取的值。可以为“All”或者1、2、3……等数字。
"Ord=All”可获取所有的数值。注册成功后,{参数名_count}表示取得的数值个数,{参数名_1}为第一个数值,{参数名_2}为第二个数值。
"Ord=1”可获取第一个值,获取第2、3……个值依此类推。
当我们选择"Ord=All”后,需要随机取值,最大限度模拟用户操作。随机取值就需要用到函数lr_paramarr_random
lr_paramarr_random("参数值")
示例2:
char * ID1; //声明变量
……
……
ID1 = lr_paramarr_random("getid1"); //随机取值
lr_output_message("############\n%s\n############", ID1);
lr_save_string( ID1,"idtmp1" ); // 获取的参数参数化,以备调用
示例2还可以进一步简化
示例3
lr_save_string( lr_paramarr_random("getid2"),"idtmp2" ); // 获取的参数参数化
补充部分知识:
//lr_eval_string("{参数名}")/取得参数的数值。可取得已注册参数或DataFile类型参数的数值。
// strcat 连接两个字符串。
char *strcat ( char *to, const char *from );
// strcmp 比较 string1 和 string2 以确定字母排序的次序。
int strcmp ( const char *string1, const char *string2 );
// strcpy 将一个字符串复制给另一个。
char *strcpy ( char *dest, const char *source );
// stricmp 对两个字符串进行不区分大小写的比较。
int stricmp ( const char *string1, const char *string2 );
// strlen 返回字符串的长度(以字节为单位)。
size_t strlen ( const char *string );
// strlwr 将字符串转换为小写。
char *strlwr ( char *string );
很多时候响应返回的内容很长,导致我们不能正常获取参数。此时我们需要在脚本前面加上下面的语句
web_set_max_html_param_len("2560000");
// web_set_max_html_param_len 函数是一个服务函数,用于关联 HTML 语句。
// 仅当启用“在录制过程中关联”时才录制该函数(请参阅 VuGen 的录制选项)。
int web_set_max_html_param_len (const char *length );
最后,根据个人经验,web_reg_save_param放在web_submit_data函数前面是无法获得需要的值的。不知道为什么。