天天看热讯:silkperformer 参数化配置
(资料图片)
http://www.ltesting.net/html/23/category-catid-123.html SilkPerformer学习网站SilkPerformer7.2参数化范例
*****股份有限公司
2006年9月
关于本文档
文档信息
文档名称 SilkPerformer7.2参数化范例
作者 测试组
说明 本文档提供給*****内部项目组使用
文件名称 SilkPerformer7.2参数化范例.doc
修订历史 (REVISION HISTORY)
Rev Section Type Date Author Remarks
1.0 全部 创建 2006-9-25 Zhangsx
目的与范围
对SilkPerformer的参数化的方法和过程进行阐述,以便灵活的运用测试脚本
适用的对象
本文档仅适用于*****股份有限公司的管理者,测试者阅读。
SilkPerformer7.2参数化范例
范例介绍:
在本实验中我们将介绍如何使用SilkPerformer 提供的功能进行参数化
实验目标:
学会如何使用SilkPerformer对脚本进行参数化
参数化的分类
一、常量(有两种方式实现)
1) 在测试脚本的全局变量定义部分(dclparam)加上如下代码: const cpara :="this is constvalue"; //定义一个常量可以是整型、布尔型、浮点型或字符串类型,或者在一个事务过程中定义常量,定义的方法相同,只是他们的作用域不同而已,全局的在当前脚本中所有的事务中都能被引用,而局部常量只能在定义他所在的事务中才可以使用,其他事务中不能引用。
2) 通过点击Script->create new parameter, 弹出参数化的向导,如下图所示
选择常量的数据类型后点“下一步”
进入如下画面
输入常量名与值后点击完成,常量参数化结束,只要在要用到该值得地方用name替换即可,生成的脚本参见附表。
二、变量
1) 变量的定义与常量的定义类似,通过var来定义,只要在脚本中加入如下代码:var bValue2: boolean;//定义了一个变量,变量也可以是全局或局部的,与常量的差别就是变量在引用过程中可以被改变而常量不能。
2) 通过点击Script->create new parameter, 弹出参数化的向导,定义随机变量,如下图所示。
点击Next >进入如下画面
选择随机变量的数据类型之后点“下一步”,进入如下画面
为随机变量命名,限定随机取值的范围后,点击“下一步”,进入如下画面
选择运用类型后,点击完成,结束随机变量参数化过程。
三、从文件中读取
(一) 、Parameter from Random varia
1) 在测试过程中有许多地方需要批量的数据,而且必须保证每个用户所使用的数值都是唯一的,有的是因为数据库中主健约束的原因,有的是为了保证数据一致性,系统控制不允许进行并发操作(例如:终端业务系统在理赔流转中,一但一个任务被接收了,就不允许其他用户再次接收处理了),首先选择需要参数化的值右击鼠标,在弹出菜单中选择Customize Value
2) 弹出如下对话框
这里有三种参数类型供选择:Constant value—将参数化一个常量;Parameter from Random Varia—指从一个随机变量中取值(例如设定最大值最小值,在这个范围内随机取值);Parameter from Multi-column datafile—从数据文件中取值(有多列值,可选取读取文件中的某列),在这里我们选择第二个,点next >
3) 进入如下画面
选择参数化变量的类型,有字符串,整型,浮点型等,在这里我们选择从文件中读取即String from file,点击下一步
4) 进入如下画面定义变量名称及变量的值
Order单选钮决定了取值时的规则是随机的还是顺序的,可以点击Show Preview查看添加的代码,保存后点击“下一步”
5) 进入如下画面
选择运用的类型:有三个共选择:
Per usage—每个用户每使用一次时重新获取一个随机值,若取数规则是顺序的(sequential),则所有虚拟用户都从第一个值开始取,循环取值。例如数据文件中有值依次为:a1,a2,a3,三个虚拟用户:Vu1,Vu2,Vu3并发时运行一次Tmain,取得值都是a1,第二次都是a2
Per Transaction—每运行一次Tmain重新获取一个随机值,一个用户可以获取不同值,取数方式与 Per usage的相同
Per Test—每个用户在一个压力测试期内只随机取一次值,只对应一值,若取数规则是顺序的(sequential),则所有虚拟用户始终取的是第一个值。例如数据文件中有值依次为:a1,a2,a3,三个虚拟用户:Vu1,Vu2,Vu3并发时运行始终都取a1
点击完成,完成参数化向导,生成的代码参见附表。
即使是这样也不能达到我们的要求,因为多个用户并发操作时还是有可能取到同一值的,接下来介绍一下第三种参数化类型:
(二) 、Parameter from Multi-column datafile
1) 首先选择需要参数化的值右击鼠标,在弹出菜单中选择Customize Value
2) 进入如下画面
选择Parameter from Multi-column点next >
3) 进入如下画面
4) 在此可以新建一个数据文件,给参数命名,给数据文件填充值选择其中的一列点击下一步(注意:只有选中某列后下一步Button才可用)
5) 进入如下画面
在此可以选择取值时是随机的(Random)还是顺序(sequential)以及运用类型:
Per Transaction—每执行一次Tmain重新取一次值,例如:若取数规则是顺序的(sequential)则运行一次Tmain则重新取一次值(这种方式循环取值可保证并发取值时的唯一性),数据文件有值a1,a2,a3,a4三个虚拟用户并发:Vu1,Vu2,Vu3,都运行一个Tmain分别是a1,a2,a3,都运行第二个Tmain时,Vu1,Vu2,Vu3对应的取值是a4,a1,a2。
Per Test—每一次测试每个用户只取一个值,例如:若取数规则是顺序的则每一次测试每个用户只取一个值,按照取值顺序,顺序取值,若数据文件中的值得数目<并发用户数,则并发取值时不能保证唯一性,需保证数据文件中的值得数目>并发用户数,数据文件有值:a1,a2,a3,a4 三个虚拟用户并发:Vu1,Vu2,Vu3,在一个压力测试期内Vu1始终取a1,Vu2始终取a2,Vu3始终取a3
点击完成,完成此次参数化,生成脚本参见附表,往往不仅要控制并发时取数不冲突,而且还要确保每一个值只能被一个用户使用(在很多客户的应用中不允许同一个用户登录多次,例如Itest,那么如果需要在登录这个业务点上加压的话,就必需对登录的用户名和密码进行参数化。但是仅仅做了参数化还是不够的,因为如果让SilkPerformer的脚本在执行过程中自己去随机的取用户名和密码或循环取值时,还是有可能会取到同一个用户名和密码,这样就冲突了,所以还必需要添加一些限制。),除了上述的Per Test运行模式可以达到这种效果之外,还可以通过silkperformer提供的函数来实现:
FileCSVLoadGlobal(hfile, csvFile, ","); //导入参数化文件
FileGetRow(hfile, GetUserId()); //根据虚拟用户的ID来取参数化的数据
sAccountName:=FileGetCol (hfile, 1, 10);//取数据的第一列
sPassword:=FileGetCol (hfile, 2, 10); //取数据的第二列
如果在第二行里面使用FileGetRndRow(hfile)函数,随机的在参数化文件里取数的话,当并发量大的时候,难免会造成取数冲突。所以在这里,用了GetUserId()来制定了哪一个虚拟用户用哪一个用户名和密码登录,这样就不存在冲突的问题了。
SilkPerformer使用点滴
一、录制时脚本为空的解决办法
使用SilkPerformer最常见的问题是在用录制时,录制不上内容,Functions数始终为0,脚本为空。
1检查注册表中的Key: HKEY_LOCAL_MACHINE | SOFTWARE | Microsoft | Windows NT | CurrentVersion | Windows | AppInit_DLLs ,其值应为:qaphooks.dll。如果在qaphooks.dll后面有逗号或者空格,必须删除逗号或空格。
2检查注册表中的Key: HKEY_CURRENT_USER | SOFTWARE | Microsoft | Windows | CurrentVersion | Explorer | BrowseNewProcess,其值应为:yes。
3检查注册表中的Key: HKEY_LOCAL_MACHINE | SOFTWARE | Microsoft | Windows | CurrentVersion | Explorer | BrowseNewProcess,其值应为:yes。
4如果修改注册表的上述项后,function还一直为0,再检查SilkPerformer的profile或proxy设置:
1)打开SilkPerformer,选择Settings | System | Recorder | Application Profiles ;
2)编辑您所使用的neterm或浏览器设置;
3)在protocol selection区内,确保Tcp/ip或Web的checkbox是选中的,然后选择“Web Settings”按钮;
4)确保Winsock的选项是Wsock32.dll或W2_32.dll。
二、录制时脚本为空的解决办法与Oracle、LoadRunner端口冲突的解决办法
在装了Oracle或LoadRunner的机器上安装SilkPerformer,会造成SilkPerformer与Oracle、LoadRunner通信端口冲突,如下图所示:
Oracle XDB(XML数据库)Http服务的默认端口是8080,而SilkPerformer脚本记录器的http协议监听端口也默认的是8080。
解决此端口冲突的方法有两种,一是更改Oracle XDB Http服务的端口;另一种方法就是更改SilkPerformer脚本记录器的Http协议监听端口。下面就简要介绍如何更改SilkPerformer脚本记录器的http协议监听端口。
1)打开SilkPerformer,选择Settings | System | Recorder | Proxies ;
2)选择HTTP协议,点“Edit”按钮编辑其设置;
3)把“listen port”编辑框中默认的8080,改为其它端口值就可以了,如18080。
安装了LoadRunner的机器会占用端口1080,而SilkPerformer脚本记录器的Socks协议监听端口也默认的是1080。解决此端口冲突的方法与上面相同。
三、插入数据的问题
在压力测试中,用户测试用例中经常会有增加数据这样的业务。所以对插入数据的主键要进行必要的定制,不然加压时插入同一条数据,肯定是会出错的。但是插入数据的主键值又分为两种,一种是服务器端自动生成的,一种是客户端自己输入的。对于后一种就必需对数据进行处理。
在silkPerformer中有几个函数可以帮助我们处理这样的业务:
GlobalVarSet(in sVariable : string,
in nValue : number,
in nTimeout : number optional): boolean;
这个函数用来设定一个全局变量的值。
GlobalVarInc(in sVariable : string,
in nInc : number,
out nValue : number,
in nTimeout : number optional) : boolean;
此函数用来给这个全局变量递增。
GlobalVarGet(in sVariable : string,
out nValue : number,
in nTimeout : number optional) : boolean;
这个函数用于从全局变量中取数值。
GlobalVarSet("CustID1", 40000);
GlobalVarInc("CustID1",1,nCustID);
sCustID : = "2300" + string(nCustID);
从上面三行代码,我们可以看到,把主键的值sCustID不断的递增了,从而保证主键的唯一。
四、参数化选择Tmain、Tinit的区别
Tmain只保证每次执行Tmain时重新取的数据不冲突,可循环取,而Tinit每个虚拟用户只运行一次,而且当数据文件中的值足够多时还能能保证一个值在一个压力测试期内只能被一个虚拟用户使用,通常我们选Tinit,但一定要保证虚拟用户数<数据文件中值的个数,否则在用FileGetRow(hfile, GetUserId())进行参数化时就会报错 ,在满足这个条件下,选择Parameter from Multi-column datafile与per Test就能保证没个值只被一个虚拟用户使用。本质上per Test 、Per Usage、Per tran,他们的区别在代码中能体现,决定于取值时的变量/参数是在init中赋值的,还是在Tmain中赋值的。
附表
参数化脚本范例:
//----------------------------------------------------------------------
// 功能根据同一保单号生成报案人名称不同的报案
//粗体部分为参数化添加的代码
//----------------------------------------------------------------------
benchmark SilkPerformerRecorder
use "WebAPI.bdh"
use "kernel.bdh"
dclparam//定义参数
pegistnametran1 : string;
paa1 : string;
pegistnameperuser1 : string;
registnamefiletran : string;
psRegistpert : string;
psRegistrandomtran : string;
sAccountName : string;
studentcount : RndUniN (1000..1010);
dcluser//定义虚拟用户
user
VUser
transactions
TInit : begin;
TMain : 1;
TShutdown : end;
var//定义变量
registnamefiletran1 : number;
hRegistpert1 : number;
hRegistrandomtran1 : number;
hfile : number;
hWeb0 : number;
nCount: number;
dclrand//定义随机变量
registname : RndStream("registname.rnd", 6);//per usageseq
registnametran : RndStream("registname.rnd", 6);//per transctionseq tinit
registnameRandom : RndFile ("registname.rnd", 6);//PerUsageRandom
aaa : RndStream("registname.rnd", 6);//per transctionseq tmain
registnameperuser : RndStream("registname.rnd", 6);//per user
dcltrans //定义事务
transaction TInit
begin
if GetUserID() = 1 then
GlobalVarSet("global counter", 1);//设定初始值为1
end;
GlobalWaitFor("All", ALL_USERS);//等待并发用户数>=ALL_USERS后才往下执行
FileCSVLoadGlobal(hRegistpert1, "registpert.csv", ",");//加载数据文件
FileGetNextRow(hRegistpert1);//获取下一行
psRegistpert := FileGetCol(hRegistpert1, 1, STRING_COMPLETE);//pertest
pegistnameperuser1 := registnameperuser;
pegistnametran1 := registnametran;//pertransaction
FileCSVLoadGlobal(registnamefiletran1, "registname.csv", ",");//per tranaction
FileCSVLoadGlobal(hRegistrandomtran1, "registrandomtran.csv", ",");
FileCSVLoadGlobal(hfile, "registrandomtran.csv", ",");//导入参数化文件
ptudentcount1 := studentcount;
end TInit;
transaction TMain
begin
paa1 := aaa;
WebTcpipConnect(hWeb0, "192.168.60.15", 23);
WebTcpipRecvExact(hWeb0, NULL, 3);
WebTcpipSendBin(hWeb0, "\hFFFB25");
WebTcpipRecvExact(hWeb0, NULL, 10);
WebTcpipSendBin(hWeb0, "\hFFFA25000000FFF0");
WebTcpipRecvExact(hWeb0, NULL, 15);
WebTcpipSendBin(hWeb0, "\hFFFB18FFFC20FFFC23FFFC27FFFC24");
WebTcpipRecvExact(hWeb0, NULL, 6);
WebTcpipSendBin(hWeb0, "\hFFFA18007674313030FFF0");
WebTcpipRecvExact(hWeb0, NULL, 15);
WebTcpipSendBin(hWeb0,
"\hFFFD03FFFC01FFFB1FFFFA1F00500018"
"\hFFF0FFFE05FFFC21");
WebTcpipRecvExact(hWeb0, NULL, 62);
WebTcpipSendBin(hWeb0, "\hFFFD016C");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipSend(hWeb0, "lastship");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 2);
WebTcpipRecvExact(hWeb0, NULL, 9);
WebTcpipSend(hWeb0, "zhaz217\r");
WebTcpipRecvExact(hWeb0, NULL, 2);
WebTcpipRecvExact(hWeb0, NULL, 621);
WebTcpipSend(hWeb0, "c");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipSend(hWeb0, "d");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipSend(hWeb0, " ");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipSend(hWeb0, "u");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipSend(hWeb0, "i");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipRecvExact(hWeb0, NULL, 27);
WebTcpipSend(hWeb0, "prp_main.4ge");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipRecvExact(hWeb0, NULL, 157);
WebTcpipRecvExact(hWeb0, NULL, 28);
WebTcpipRecvExact(hWeb0, NULL, 36);
WebTcpipRecvExact(hWeb0, NULL, 128);
WebTcpipRecvExact(hWeb0, NULL, 586);
WebTcpipSend(hWeb0, "1101000002");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 27);
WebTcpipRecvExact(hWeb0, NULL, 8);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 26);
WebTcpipRecvExact(hWeb0, NULL, 1123);
WebTcpipSend(hWeb0, "11010000");
WebTcpipRecvExact(hWeb0, NULL, 3);
WebTcpipRecvExact(hWeb0, NULL, 8);
ThinkTime(44.4);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipRecvExact(hWeb0, NULL, 56);
WebTcpipSend(hWeb0, "q");
WebTcpipRecvExact(hWeb0, NULL, 18);
WebTcpipRecvExact(hWeb0, NULL, 9);
WebTcpipSend(hWeb0, "a");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipSend(hWeb0, "a");
WebTcpipRecvExact(hWeb0, NULL, 4);
WebTcpipRecvExact(hWeb0, NULL, 62);
WebTcpipSend(hWeb0, "a");
WebTcpipRecvExact(hWeb0, NULL, 18);
WebTcpipRecvExact(hWeb0, NULL, 8);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 16);
WebTcpipRecvExact(hWeb0, NULL, 8);
WebTcpipSend(hWeb0, "4");
WebTcpipRecvExact(hWeb0, NULL, 3);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 14);
WebTcpipRecvExact(hWeb0, NULL, 37);
WebTcpipSend(hWeb0, "a");
WebTcpipRecvExact(hWeb0, NULL, 68);
WebTcpipRecvExact(hWeb0, NULL, 1300);
WebTcpipSend(hWeb0, "4");
WebTcpipRecvExact(hWeb0, NULL, 4);
WebTcpipRecvExact(hWeb0, NULL, 89);
WebTcpipRecvExact(hWeb0, NULL, 1061);
WebTcpipSend(hWeb0, "2");
WebTcpipRecvExact(hWeb0, NULL, 122);
WebTcpipRecvExact(hWeb0, NULL, 1408);
WebTcpipSend(hWeb0, "1");
WebTcpipRecvExact(hWeb0, NULL, 128);
WebTcpipRecvExact(hWeb0, NULL, 1182);
WebTcpipSend(hWeb0, "1");
WebTcpipRecvExact(hWeb0, NULL, 128);
WebTcpipRecvExact(hWeb0, NULL, 1763);
WebTcpipRecvExact(hWeb0, NULL, 174);
WebTcpipSend(hWeb0, "a");
WebTcpipRecvExact(hWeb0, NULL, 7);
WebTcpipRecvExact(hWeb0, NULL, 771);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 128);
WebTcpipRecvExact(hWeb0, NULL, 1891);
WebTcpipRecvExact(hWeb0, NULL, 591);
WebTcpipSend(hWeb0, "PQAA200611010000000005");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipRecvExact(hWeb0, NULL, 460);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipRecvExact(hWeb0, NULL, 56);
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipRecvExact(hWeb0, NULL, 65);
WebTcpipRecvExact(hWeb0, NULL, 38);
WebTcpipSend(hWeb0, "y");
WebTcpipRecvExact(hWeb0, NULL, 92);
WebTcpipRecvExact(hWeb0, NULL, 9);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 46);
WebTcpipRecvExact(hWeb0, NULL, 388);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 7);
WebTcpipRecvExact(hWeb0, NULL, 44);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 7);
WebTcpipRecvExact(hWeb0, NULL, 7);
//
//
//此处参数化
/GlobalVarInc("global counter", 1, nCount);//设定增长值为1
FileGetNextRow(registnamefiletran1);//获取文件中的下一行
registnamefiletran:=FileGetCol(registnamefiletran1,2, TRING_COMPLETE);//pertest
FileGetRndRow(hRegistrandomtran1);//随机获取文件中的某一行
psRegistrandomtran := FileGetCol(hRegistrandomtran1, 1, STRING_COMPLETE);//获取某一列值
FileGetRow(hfile,GetUserId()) ; //根据虚拟用户的ID来取参数化的数据
sAccountName:= FileGetCol(hfile, 1, STRING_COMPLETE);//取数据的第一列
WebTcpipSend(hWeb0, sAccountName);//SaccountName可用前面定义的 pegistnametran1 、 paa1 、 registnameperuser1 、 registnamefiletran、 psRegistpert、 psRegistrandomtran及dclrand中定义的随机变量及String(nCount) 、string(ptudentcount1)替换
Print(pegistnametran1, OPT_DISPLAY_ALL, TEXT_RED);
WebTcpipRecvExact(hWeb0, NULL, 23);//
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSendBin(hWeb0, "\h0F");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipRecvExact(hWeb0, NULL, 1822);
WebTcpipRecvExact(hWeb0, NULL, 598);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 94);
WebTcpipRecvExact(hWeb0, NULL, 1996);
WebTcpipRecvExact(hWeb0, NULL, 102);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 43);
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "1");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "2");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "3");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "4");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "5");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "6");
WebTcpipRecvExact(hWeb0, NULL, 23);
ThinkTime(4.6);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 8);
WebTcpipSend(hWeb0, "z");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "h");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "a");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "n");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "g");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "1");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 40);
WebTcpipRecvExact(hWeb0, NULL, 48);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 8);
WebTcpipRecvExact(hWeb0, NULL, 134);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 8);
WebTcpipRecvExact(hWeb0, NULL, 16);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 8);
WebTcpipRecvExact(hWeb0, NULL, 8);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 8);
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSendBin(hWeb0, "\h0F");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipRecvExact(hWeb0, NULL, 1824);
WebTcpipRecvExact(hWeb0, NULL, 1210);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 94);
WebTcpipRecvExact(hWeb0, NULL, 1929);
WebTcpipRecvExact(hWeb0, NULL, 83);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 8);
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 8);
ThinkTime(2.4);
WebTcpipSend(hWeb0, "f");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "u");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "j");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "i");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "a");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "n");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 8);
WebTcpipSend(hWeb0, "1");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 8);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 8);
WebTcpipSend(hWeb0, "1");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "1");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 34);
WebTcpipRecvExact(hWeb0, NULL, 8);
ThinkTime(47.9);
WebTcpipSend(hWeb0, "1");
WebTcpipRecvExact(hWeb0, NULL, 43);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 49);
WebTcpipRecvExact(hWeb0, NULL, 51);
WebTcpipSend(hWeb0, "1");
WebTcpipRecvExact(hWeb0, NULL, 92);
WebTcpipSend(hWeb0, "1");
WebTcpipRecvExact(hWeb0, NULL, 31);
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "1");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "2");
WebTcpipRecvExact(hWeb0, NULL, 23);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 30);
WebTcpipSendBin(hWeb0, "\h1B"); // ?
WebTcpipRecvExact(hWeb0, NULL, 3);
WebTcpipRecvExact(hWeb0, NULL, 122);
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipRecvExact(hWeb0, NULL, 39);
WebTcpipRecvExact(hWeb0, NULL, 38);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 92);
WebTcpipRecvExact(hWeb0, NULL, 2081);
WebTcpipRecvExact(hWeb0, NULL, 1711);
WebTcpipRecvExact(hWeb0, NULL, 6);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 128);
WebTcpipRecvExact(hWeb0, NULL, 1440);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 128);
WebTcpipRecvExact(hWeb0, NULL, 1017);
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 122);
WebTcpipRecvExact(hWeb0, NULL, 1161);
end TMain;
transaction TShutdown
begin
WebTcpipSend(hWeb0, "0");
WebTcpipRecvExact(hWeb0, NULL, 4);
WebTcpipRecvExact(hWeb0, NULL, 34);
WebTcpipSend(hWeb0, "y");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 10);
WebTcpipRecvExact(hWeb0, NULL, 66);
ThinkTime(2.3);
WebTcpipSend(hWeb0, "exit");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipSend(hWeb0, "\r");
WebTcpipRecvExact(hWeb0, NULL, 1);
WebTcpipRecvExact(hWeb0, NULL, 3);
WebTcpipShutdown(hWeb0);
FileUnload(registnamefiletran1);
FileUnload(hRegistpert1);
FileUnload(hRegistrandomtran1);
end TShutdown;
相关阅读
-
当前热议!怎样更换计算机主板电池,笔记本电脑主板电池怎么更换?教你更换主板电池的方法...
花火网消息,笔记本主板电池是非常重要的笔记本零部件之一,那么,我们在生活中如何更换笔记本主板电池...
2022-09-29 -
今亮点!MonkeyTest——简单无脑的移动端自动化测试(初级篇)_monkeytest
MonkeyTest-操作步骤:1 下载AndroidsdkX64位,必须和你的电脑操作系统一致。2 安装完成后,增加adb的...
2022-09-29 -
环球新资讯:linux封装函数,libc库和封装函数 | 求索阁
Linux系统调用这部分经常出现两个词:libc库和封装函数,不知道你是否清楚它们的含义?libc1)libc概念li...
2022-09-29 -
诺基亚发布2022年Q3财报 第三季度营业利润6.58 亿欧元
DoNews10月20日消息(丁编程凡)今日,诺基亚公布了2022年Q3季度运营利润,低于市场预期。数据显示,该...
2022-10-20 -
电竞党双·11剁手指南:拯救者Y9000P超强配置 3A大作的游戏本标杆-环球微头条
10月20日晚8点,一年一度的双11购物节正式拉开帷幕。伴随着消费升级趋势来临,人们生活水平不断提高,大...
2022-10-20 -
调查:67%的欧洲科技界女性认为与男性相比报酬过低 一半的人遭遇过性别歧视
据TechCrunch报道,上个月,在国际同工同酬日,国际劳工组织(ILO)组织透露,全球女性的平均工资比男性...
2022-10-20 -
iPhone7 Plus多少钱?iPhone7 Plus价格
iPhone7Plus起价6388元。有银色、金色、玫瑰金、黑色和钢琴黑。iPhone7Plus搭载新一代A10Fusion芯片,采...
2022-10-20 -
webcheck.dll是什么
DLL文件:webcheck或者webcheck dll。DLL名称:WebSiteMonitor。webcheck dll是用于对网站进行监视的C...
2022-10-20 -
马斯克发推特宣布BurntHair香水已售罄 二手转售价更加夸张
10 月 12 日马斯克的隧道初创公司 Boring Company 推出新品 Burnt Hair(烧焦的头发)限量版香水...
2022-10-20 -
iTouch5和iTouch4有什么区别 iTouch5和iTouch4区别
iTouch4和iTouch5iTouch4iTouch5 上一次iTouch4更新还是在2010年的时候时隔两年。iTouch系列总算赢来又...
2022-10-20 -
网友猜测自购国行版苹果14ProMax为印度组装 官方技术顾问回应
有网友在网上晒出自己买到的国行 iPhone 14 Pro Max 是在印度组装的。据该网友透露,其上周在苹果...
2022-10-20 -
十铨首创双冷头强效散热新品亮相 设计焕新不惧大功率SSD
十铨宣布推出 T-FORCE SIREN DUO360 ARGB CPU & SSD 一体式水冷散热器,业界首创双冷头强效散热...
2022-10-20 -
USB80Gbps解决方案特点一览:Type-C可非对称配置 速度更快
USB-IF 宣布发布 USB4 版本 2 0 规范,可实现 80Gbps 传输性能,与此相关的 USB Type-C 和 USB Power Delivery (USB PD)
2022-10-20 -
微软悄然公布WSA路线图:即将引入Android 13系统支持
微软近日对Windows11端的WindowsSubsystemforAndroid(WSA)子系统带来了一些更新。根据微软在Github上...
2022-10-20 -
漫威免费卡牌游戏已可在Steam开玩 游戏节奏快且万分精彩
漫威卡牌游戏《MARVEL SNAP》现已上线 Steam,免费开玩。据官方介绍,漫威 SNAP 是一款超快节奏的策...
2022-10-20 -
皓丽2022线上发布会:5大新品亮相,多位行业大咖与合作伙伴助阵!
10月20日,皓丽举行了2022年度新品发布会,30多家平台同步线上直播,超百万人次在线观看。发布会上,皓...
2022-10-20 -
iPhone14系列进行专业跌落测试 结果表明Plus比ProMax更坚固
一家设备保险公司对苹果 iPhone 14 Plus 和 iPhone 14 Pro Max 进行的跌落测试清楚地表明,哪...
2022-10-20 -
KTC公开M27T20S显示器新品 配置较原版减去RGB灯与支架
KTC 今日公布新款 M27T20S 显示器,在原版 2K165Hz MiniLED 规格的 M27T20 的基础上砍掉了 RGB 灯、升降支架,90W USB-C 变为
2022-10-20 -
加量不加价!苹果将未发货iPad Pro免费升级到M2款-天天快讯
在新款发布前购买2021款iPadPro且尚未发货的网友表示,苹果已经提醒用户2021款iPadPro已经自动升级为新款iPadPro。
2022-10-20 -
ROG正式SwiftPG27AQN显示器详细规格 上市计划有望即日实现
在今年 CES 上,ROG 发布了新款 Swift PG27AQN 显示器,达到了 2K 360Hz 的超高规格。现在,这...
2022-10-20 -
《蝙蝠侠》新游被指要求过高:1080p推荐RTX 2070显卡及8核i7
动作游戏《蝙蝠侠》最新作《哥谭骑士》即将在10月21日发售,主机版因为锁30帧的事被玩家吐槽,PC版玩家...
2022-10-20 -
三星G8显示器今晚开售:2K+175Hz高刷 首发9999元-世界滚动
此前在海外发布的三星OdysseyOLEDG8带鱼屏显示器现已上架京东,今晚8点正式开启预售,原价13999元,预售...
2022-10-20 -
macOS13Ventura正式版即将上线 官方宣传称其将更加高效
苹果官网更新信息显示,macOS 13 Ventura 正式版将于 10 月 25 日推出,与 iPadOS 16 正式版...
2022-10-20
精彩推荐
阅读排行
相关词
- 坚果u1
- 蛋疼网
- dfrobot
- tizen系统
- dead trigger
- quara
- archos
- 半条命alyx
- ipaid
- htc one a9
- 布加迪发布Carbone智能手表:限量2500只 售价超1.8万-当前资讯
- 淘宝购物车扩容至300 新增分组、优惠筛选等功能
- 番茄小说免费版真的可以赚钱吗
- 怎么取消XP系统的开机密码 windows无法删除密码
- 王者荣耀升级防沉迷措施:限制未成年游戏时间、氪金上限
- 李国庆成立感觉良好公司 经营范围含互联网直播服务
- 光影魔术手多图边框的快捷键是什么
- vivo X9s什么时候上市_vivo X9s上市时间
- 几款索尼投影仪价格介绍
- 空气开关规格型号大全 方便您的居家选择
- 马斯克卖香水、小鹏卖麻将,大厂“不务正业”有多疯狂-今日要闻
- 美的加湿器怎么用 美的加湿器使用方法
- 如何使用3G无线上网卡来上网 笔记本3G无线上网卡上网指南
- 可视对讲机的工作原理是什么 可视对讲机原理
- oem和odm是什么意思 oem与odm区别是什么
- 索尼vr眼镜怎么样 索尼vr眼镜报价和评测
- 比亚迪新专利曝光 可用方向盘操控车载游戏
- APP是什么意思_APP是什么
- 任务栏输入法图标不见了怎么办
- win7怎么装回xp系统 win7系统改装xp的方法-快播
- 荣耀申请灵动胶囊/精灵商标:领先苹果iPhone 14 Pro四年
- 怎么查宽带上网时间 具体方法如下
- 甲骨文公司官宣:将在OCI中部署上万个英伟达顶级计算GPU
- dnf深渊怎么开 关于dnf深渊怎么开的问题
- 华硕主板前面板耳机没有声音的解决方法-环球今热点
- KOOBEE A106怎么样
- Meta最强交易官离开公司 曾帮助脸书收购Ins
- WindowsTerminal现已成为微软最新系统默认体验终端工具
- win8运行在哪里 如何打开win8系统的运行命令-全球快消息
- 网页视频看不了怎么办_网页视频看不了的解决方法-每日报道
- win7玩cf老是与主机连接不稳定的解决方法-报资讯
- 无线AP是什么 无线AP怎么用
- 康福中国 Camfrog 6.0 中文版安装教程(英文版转中文版设置方法)
- LED背光板原理是什么 LED背光板原理详细介绍
- windows双系统怎么设置启动顺序 win双系统默认开机启动项设置方法-环球即时
- 安装电地暖价格是多少 安装电地暖价格预算
- 广汽透露将在明年投产自主品牌PHEV产品 并分析相关车型布局
- win7系统安装英雄联盟补丁包的两种方法-热消息
- qq腾讯网迷你版怎么设置不弹岀来
- 联想win8重装系统步骤 联想win8系统重装教程-世界速看
- 世纪之星机箱怎么样 世纪之星机箱介绍
- ibackupbot怎么用 ibackupbot使用教程(附ibackupbot中文版下载地址)
- 原版dell oem xp pro sp3光盘镜像下载地址-环球资讯
- win10系统电脑没有手机驱动的解决方法-时快讯
- 163邮箱登录入口 手机端163邮箱登录入口
- 蔚来总裁秦力洪回复网友建议 并称将考虑开卖欧版汽车一事
- QQ空间日志图片如何加水印
- 了解什么是电源控制器 电源控制器功能
- IPhone13pro电池容量多大-IPhone13Pro电池参数续航介绍
- 哪种植物会寄生在梭梭根部?蚂蚁庄园今日答案11.23
- 华为nova5pro和nova5i的区别
- 如何在手机QQ中下载表情包 具体操作方法
- 怎么自动识别查询快递单号查询-自动识别查询快递单号查询方法
- 电脑打电话给手机步骤详解
- win7系统下怎么调cf烟雾头-环球热议
- 电视直播软件哪个好 网络电视直播软件排行2014详情介绍
- MSN帐号格式以及MSN用户名格式的详细介绍
- 电脑进入桌面后黑屏如何修复_电脑经常进入桌面之后黑屏的处理方法-全球新动态
- xbox360手柄模拟器怎么样 xbox360手柄模拟器介绍
- ie浏览器打不开_ie浏览器打不开网页_IE浏览器打不开网页的解决方法
- 把rmvb格式转换成dvd的详细图文教程
- 数码闲聊站曝光OPPO新折叠屏手机:电池容量有望超过ZFlip4
- Win7锁定计算机快捷键是什么 Win7使用锁定计算机快捷键的方法-全球动态
- xr是什么意思-xr改的意思介绍
- 如何让win7自动拨号上网|让win7自动拨号上网的教程-全球速看
- 电脑性能怎么检测 电脑性能检测的方法
- Win7系统打开IE浏览器后页面自动关闭的四种解决方法-重点聚焦
- Win10系统如何打开内涵图种子-世界微速讯
- 鸿海董事长刘扬伟:新款电车零配件将优先采用MIH联盟成员产品
- ie浏览器网页字体怎么变大|如何将网页字体变大-全球速讯
- windows xp3 原版下载_windows xp3 原版下载地址-环球热资讯
- 怎么用硬盘装xp系统 硬盘安装xp系统步骤图解-全球聚焦
- 如何禁用和开启电脑光驱 电脑禁用和开启光驱的方法-世界新要闻
- 分析师称苹果将在后年发布OLED版iPadPro 屏幕亮度获提升
- deepmoss 2022 Autumn Winter 甲板之上
- “抱冷门”赢世界杯定制礼品!容声WILL健康冰箱羊毛“鲜”薅为敬
- “狲思邈”离世,中国“最穷”动物园出圈
- 1.8万就能拥有布加迪!全球第一款全碳纤维智能手表发布-微资讯
- 精悍小巧,功能不少! 华硕电竞路由新品RT-AX57来了
- P站宣布将区分AI画图和真人作品 提供单独的排行榜-环球速读
- 迷宫探险动作游戏《迷宫传说》繁体中文版今天正式上市!-当前快播
- “极境之域”加载中,请准备进入
- 荣耀畅玩40 Plus新机发布:首发1199元 6000mAh大电池
- PS4版《女神异闻录5:皇家版》价格永久下调100元 10月31日生效-世界球精选
- 值得买科技获2022年度第一批“北京市企业技术中心”认定
- 有了这个智能枕头 睡觉再也不打鼾了!-环球精选
- 淘宝购物车扩容至300 新增分组、优惠筛选等功能
- 摸鱼5分钟:去鹤岗全款买房幸福感飙升 90后父母给儿子取名叫“张总”-播报
- 秋冬大衣千万别在款式上作妖了!
- 联想专业电竞鼠标来了:拯救者M7将于10月底发布-环球时讯
- 最酷的姐姐就是穿着球鞋把婚结了
- 腾讯阿里抢在双11前一连三通
- 京东PLUS会员年卡76元-全球滚动
- 今晚八点正式开启预售 京东11·11促销时间表曝光
- 【手慢无】摆着都美 华硕创意游戏电脑主机只需6199元-新视野
- iPhone 14 Plus减产规模在70%-90% 刷新苹果历史
- 《寂静岭2重制版》PS5版无加载画面 支持触觉反馈等-快资讯
- 联想小新Air14 2023公开部分规格:新笔电将搭载下沉式键盘
- 骁龙处理器排名天梯图最新 骁龙处理器排行榜2022-每日聚焦
- 北京冬奥上火爆全球:谷爱凌获最佳女运动员表现奖
- 缺锂怎么办?马斯克式解决方案:特斯拉自己干
- HKC新MiniLED显示器上架:2K 240Hz 首发价2999元-全球报道
- 科乐美推出《寂静岭》周边:护士姐姐依旧吸睛-全球头条
- 超越人类的交互感受,深度体验小鹏G9智能语音-全球播报
- 朗科新推绝影NV5000-t固态硬盘 温控技术更高 售价暂未公布
- 4999元起,机械革命极光Z游戏本发布,最高可选i7-12700H-观察
- 【手慢无】无蓝光液晶屏 小米液晶小黑板仅售89元-当前动态
- Redmi X Pro 正式发布-天天快报
- ios16.1正式版推送时间计划 ios16.1正式版什么时候更新-热头条
- 【手慢无】锐龙R7-5800H处理器+2.8K OLED屏 华硕无畏14电脑入手仅需3999元-天天快播
- 微信朋友圈提到了我是什么意思 提醒谁看别人能看到吗-当前视点
- 【手慢无】小巧精悍的惠普迷你主机秒杀价2997元-世界速看料
- DXO披露Xperia10IV影像测试分数 并称其具备户外拍摄细节
- 【手慢无】联想ThinkPad neo 14英寸高性能标压笔记本,活动直降1000元-每日看点
- 特斯拉真正自动驾驶要来了?马斯克将在2023年申请监管批准
- Nreal携手LGD推出开「大」联名礼盒 LGD夺冠0元到手
- 【手慢无】护眼学习平板联想小新Pad只要899元。-天天新动态
- 联想概念新品亮相LenovoTechWorld 并提出CyberSpaces方案
- 【手慢无】小尺寸游戏平板,联想拯救者y700活动优惠价只要2269元-环球热消息
- 双·11大促即将开启 三款主流价位段3060游戏本闭眼入-天天热资讯
- 双十一前淘宝购物车扩容至300:新增分组、排序等功能
- 开发商343i为肢体残缺儿童提供《光环》主题义肢
- 微软专利揭示能调节表面粗糙度的先进显示屏
- 报道称三星正研发新款智能戒指 相关专利早已在去年提出申请
- 摩托罗拉最新演示卷轴屏概念手机 为纵向扩展还有配套动态壁纸
- 科学家在3D打印食品中直接加入二维码 且完全不影响其口感
- 云南小熊猫翘班跑进学生宿舍 动物园:将会调查其具体溜出途径
- NASA公布天体景象创生之柱新图像 其旧照曾被评为哈勃十佳之一
- 中国天眼发现迄今最大原子气体结构:或将向宇宙演化提出挑战
- 研究发现黑洞饭后会“打嗝”:吞噬小恒星多年后却又将其喷出
- 女生求职碰壁遇HR帮改简历:学会换位思考或许就能锦上添花
- 大妈跳舞过于陶醉把自己转到湖里 掉河后众人合力将大妈拉上岸
- 次世代模拟人生游戏及其开发代号正式公开 新品将可跨平台游玩
- 苹果官网最新上架编织充电线产品 接口未包含Lightning版本
- Solidigm新发布PCIe4.0SSD 最高容量为2TB 为NAND技术制造
- iPad专用妙控键盘双面夹来了 具备全尺寸按键 还有更宽触控板
- 2015款AppleTV HD将被官方停售 其操作系统为iOS完全适配
- 安卓平板所用Chrome正发布一系列更新 标签页变化更加多样
- 贝尔金最新百元iPhone支架开售:专为连续互通相机使用而设计
- 一加AcePro原神限定版发布会确定将在下周一上线 宣传语放出
- 2022款iPadPro将可使用视频编辑软件达芬奇 使用软件更专业
- 模拟人生4正式成为免费游戏 并可在PS4/XboxOne等平台开玩
- 郭明錤预测称:苹果AppleTV下代新品或将进一步下调起售价
- 苹果全新推出AppleTV 4K产品:流式传输可以千兆以太网进行
- 赛博朋克2077衍生动画制片人:现在还未有制作续集的计划
- 三星990PRO PCIe4.0SSD有望即日上市 随机读写已提高五成
- 光电编码器的工作原理介绍 光电编码器的优缺点都有什么?
- 光电编码器测速方法有哪些?光电编码器和磁电编码器的区别都有什么?
- 苹果发布iPad10后再火速上架新配件 可转换至原有Pencil接口
- 光电编码器如何判断方向?光电编码器的工作原理是什么?