web

    xiaoxiao2022-07-03  161

    (1)web_custom_request函数与其他录制函数的区别 在LR中当使用HTML录制方式时,录制的脚本中主要由函数web_link()、web_submit_form()、web_url()、web_submit_data()组成,当使用HTTP录制方式时,录制的脚本中主要由函数web_url()、web_submit_data()组成,主要区别在于:

    当使用HTML录制时得到的函数更接近用户的实际操作,脚本代码相对较少且易于理解一些,但是函数之间有前后依赖关系,耦合度较高,其中web_link()用于模拟用户点击页面上的链接;web_url()用于请求某个链接,Mode的值为HTML,如果某个链接页面上有大量的非html元素,例如:js、css、vbs、activeX、applets、各种格式的图片等,则按照录制时的设置来处理,默认为也录制到脚本步骤中,即web_url()函数的EXTRARES选项中,另外,也可以设置成不录制或录制到并发组web_concurrent_start(NULL)和web_concurrent_end(NULL)之间的web_url()函数中。

    当使用HTTP录制时得到的函数将包含所有请求内容,每一项需要请求的内容都会得到一个web_url()函数,Mode的值为HTTP,因此脚本中会有大量的web_url()函数,且一般不带EXTRARES选项,得到的脚本没有很强的前后依赖关系,相对HTMP脚本的耦合度低一些,请求的内容也更全一些,一般只在很标准B/S模式下才会选用HTML,多数时候都可以选用HTTP的方式来录制。另外在该录制模式下,也可以设置选择是否使用并发组函数web_concurrent_start()和web_concurrent_end(),如选择则在很多非HTML的元素的请求前后都会加上并发组函数,还可以选择是否只使用自定义函数web_custom_request(),如选择则得到的脚本中所有的web_url()、web_submit_data()函数都将由函数web_custom_request()替代之。

    本文的主角web_custom_request()终于上场了,web_custom_request()函数是一个可以用于自定义http请求的“万能”函数,具有web_link()、web_url()、web_submit_data()函数的功能,一般当自定义请求时可以配合函数web_add_auto_header()、web_add_header()等系列函数来自定义其请求头,web_custom_request()函数的Mode字段为HTML时相当于使用HTML录制方式的函数,Mode字段为HTTP时相当于使用URL录制方式的函数,Method字段可以为GET和POST分别用于模拟http的get和post请求。

    该函数web_custom_request()的具体参数说明可以参见本片文章结尾的附录。

    当使用web_custom_request()函数来发送http的get和post请求时,如果不使用web_add_header相关函数来自定义添加头部,请求中是否带有默认的头部字段?通过使用抓包工具来查看发出的请求中的头部字段

    脚本一: web_custom_request("web_custom_request", "URL=http://www.baidu.com", "Method=GET", "TargetFrame=", "Resource=0", "Referer=", "Mode=HTTP", "Body=123", LAST); 脚本一实际发出的请求: GET / HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT) Accept-Encoding: gzip, deflate Accept: */* Connection: Keep-Alive Host: www.baidu.com Content-Length: 3 123 脚本二: web_custom_request("web_custom_request", "URL=http://www.baidu.com", "Method=POST", "TargetFrame=", "Resource=0", "Referer=", "Mode=HTTP", "Body=abcd", LAST); 脚本二实际发出的请求: POST / HTTP/1.1 Content-Type: application/x-www-form-urlencoded Cache-Control: no-cache User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT) Accept-Encoding: gzip, deflate Accept: */* Connection: Keep-Alive Host: www.baidu.com Content-Length: 4 abcd

    由此可知,在使用web_custom_request()函数来模拟HTTP请求时,发出的请求中默认带有部分的http请求头部字段,具体字段如上,如需要修改默认的头部字段或增加其他头部字段就在web_custom_request()函数的前面使用web_add_header()函数来添加,如果要减少某个头部字段或全部自动添加的头部字段就在web_custom_request()函数的前面使用web_remove_auto_header()和web_revert_auto_header(),头部字段所有请求中公共的一些头部可以放在web_add_auto_header()函数中,配合web_add_header系列函数来完成自定义的业务脚本。 (2)web_custom_request函数参数介绍

    URL- 请求地址 Method – 请求方法 POST or GET. EncType – 编码类型,指定Content-Type,如"text/html","application/json"等,会重写 web_add_[auto_]header中定义的Content-Type。 RecContentType – 响应头编码类型(Content–Type) e.g., text/html, application/x–javascript. Body – 请求体,不同的应用中,请求体分别通过Body、BodyBinary或者BodyUnicode参数来传递 Resource – 指示URL是否属于资源。1 是;0 不是。设置了这个参数后,RecContentType参数被忽略。 "Resource=1":意味着当前操作与所在脚本的成功与否关系不大。在下载资源时如果发生错误,是当作警告而不是错误来处理的;URL是否被下载受“Run-Time Setting—Browser Emulation--Download non-HTML resources” 这个选项的影响。此操作的响应信息是不做为HTML来解析的。 "Resource=0" :表明此URL是重要的,不受发送请求(RTS)的影响,在需要时也会解析它。 Mode – 录制级别: HTML or HTTP. UserAgent – 用户代理,它是一个HTTP头的名字,用来标识应用程序,通常是浏览器,它呈现的是用户和服务器的交互。

    (3)web_custom_request函数发送get和post请求

    Action() { //GET 请求 web_custom_request("get_login", "URL=http://10.1.102.75:8000/login?user=Milton&pwd=Loveyp", "Method=GET", "Resource=0", "Mode=HTML", "RecContentType=application/json", LAST ); //POST 请求提交form数据 web_custom_request("post_form_login", "URL=http://10.1.102.75:8000/login", "Method=POST", "Resource=0", "Mode=HTML", "Body=user=Milton&pwd=Loveyp", LAST ); //POST 请求提交json数据 web_custom_request("post_json_login", "URL=http://10.1.102.75:8000/json_login", "Method=POST", "Resource=0", "Mode=HTML", "EncType=application/json", "Body={\"user\":\"Milton\",\"pwd\":\"Loveyp\"}", LAST ); return 0; }
    最新回复(0)