51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6756|回复: 15
打印 上一主题 下一主题

[求助] 如何将web_reg_save_param获得的参数保存在文本中(问题已解决)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-5-15 16:13:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
“如何将web_reg_save_param获得的参数保存在文本中”这个想法的提出在zee的blog中看到一篇关于“Zee的LR脚本练习一:写随机数到文本里”的帖子后想到的。原文链接地址为:http://www.51testing.com/?17369/ ... tml#xspace-itemform  我将具体的代码转载到这里,希望zee能同意。sdlkfj1

typedef long time_t;
Action()
{

int i,k;
time_t t;
char *filename="c:\\test.txt";
long file;
srand((unsigned) time(&t));
lr_output_message("Ten random numbers from 0 to 99\n\n");

if ((file = fopen(filename, "w+" )) == NULL) {

   lr_output_message("Unable to create %s", filename);

   return -1;
}

for (i=0; i<10; i++)     {
  lr_output_message("%d\n", rand()%100);
k= rand()%100;
   fprintf(file,"%d \n ",k);
}

   fclose(file);
return 0;

}

在学习这段代码的时候发现设置pacing次数对于写入文本的数据条数没有影响,我想问一下,如果我将pacing设置为2或者更大,可否能让记录的条数也相应增加而不是覆盖之前的记录呢?请教如何实现?

[ 本帖最后由 guxingyun 于 2007-5-23 15:19 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-5-15 16:22:23 | 只看该作者
这个跟pacing无关

跟写入c:\\test.txt是Append写入 还是 覆盖写入有关

另外你看那个循环是10次,你增加它可能有你想要的效果吧
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-5-15 16:56:41 | 只看该作者

回复 #2 shanxi 的帖子

谢谢 shanxi 的回复,sdlkfj2 我将其中的 w 改为 a 就可以了 if ((file = fopen(filename, "a+" )) == NULL)
r(read): 读w(write): 写a(append): 追加t(text)
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2007-5-22 21:53:15 | 只看该作者

如何保存web_reg_save_param获得的多个相似参数

前面的疑问是在查询一条记录时产生的,并且对于获得一条记录中的参数并保存的过程已经在上述回复中实现。今天需要将web_reg_save_param获得的多个相似参数保存在文本中,比如这样的一个例子(html页面),查询包含某个字母的用户名,搜索的结果有50条,在vgen录制的用户名页面的body中可以看到这50个用户的信息,也就是服务器发送给客户端的信息。在web_reg_save_param的用法中提到这50个用户名会保存在array中,但是我如何将之保存在文本中呢?难道要使用lr_eval_string("{name_1}"),lr_eval_string("{name_2}")等将获得的数据一条一条地保存吗?可否使用一个循环语句来实现或者其它的方法?

[ 本帖最后由 guxingyun 于 2007-5-22 22:19 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-5-22 22:09:49 | 只看该作者
肯定是要用循环啊,只是你的参数是要规律的。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2007-5-22 23:32:40 | 只看该作者

回复 #5 rickyzhu 的帖子

查询的用户名列表的html的body中的相关内容形式如下(将不必要的内容做了删除):
<name>
        <username>liming</username>
</name>
<name>
        <username>lijun</username>
</name>
……
web_reg_save_param将username保存在array中,那么我如何将array中的数据保存呢?或者是实现lr_output_message?

[ 本帖最后由 guxingyun 于 2007-5-22 23:37 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-5-23 08:43:46 | 只看该作者
web_reg_save_param("username",
"LB=<username>",
"RB=</username>",
"Ord=ALL",
LAST);
这样username保存的就是所有的出现在<username>和</username>的值了.
Ord=ALL表示此时的username是一个数组.
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2007-5-23 08:47:43 | 只看该作者

回复 #7 duola1119 的帖子

是保存在数组中了,但是我想将这个数组中的信息保存在文件中,将如何实现呢?
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-5-23 08:49:24 | 只看该作者
如果要输出的话可以使用一个for循环
---
count=atoi(lr_eval_string("{username_count}"));/*计算所有的username的个数*/
for(i=1;i<count;i++)
{
  sprintf(username,"{username_%d}",i);/*输出username_1.username_2....*/
}
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-5-23 08:53:13 | 只看该作者
原帖由 guxingyun 于 2007-5-23 08:47 发表
是保存在数组中了,但是我想将这个数组中的信息保存在文件中,将如何实现呢?

不知道LR是否提供了该功能.目前还不知道有什么方法实现.关注.
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2007-5-23 09:18:10 | 只看该作者

实现了数组数据的保存

看了zee的“循环打印web_reg_save_param保存的参数”的帖子,问题得到解决。方法稍候附上。
http://www.51testing.com/?17369
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2007-5-23 10:44:35 | 只看该作者
如果name中有汉字和数字的话,保存的只有数字,汉字就是空格。应该和录制脚本时的设置有关,将之前录制的可以保存汉字的脚本编辑后可以正确实现汉字的保存。

[ 本帖最后由 guxingyun 于 2007-5-23 11:32 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-5-23 11:52:10 | 只看该作者
记号
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2007-5-23 15:15:39 | 只看该作者

具体实现时使用的代码

现在将具体的实现方法附上,如果查询的列表存在多页的情况,我现在的方法是将保存第一页参数的代码复制一遍,然后将 web_url 的链接稍作些修改,比如将page=1改为page=2。应该还有其他的方法,代码也可以优化,共同学习。
Action()
{
        char sname[128];         //写入文件时使用
        char buffername[128];         //在执行窗口输出时使用
  int i;
        long file;
        char *filename="c:\\name.txt";
       
        web_set_max_html_param_len("1024");

//因为查询列表有好几页,这是保存第一个页面获得的参数
        web_reg_save_param("name",
                "LB=<name>",
                "RB=</name>",
                "Ord=All",
                "Search=Body",
                LAST);

        web_url("UserResult.jsp",
                "URL={url}query/User/UserResult.jsp?enterpriseid=10&username=&page=1",
                "TargetFrame=",
                "Resource=0",
                "RecContentType=text/html",
                "Referer={url}query/User/Userquery1.jsp?nodeid=23",
                "Snapshot=t8.inf",
                "Mode=HTML",
                EXTRARES,
                "Url=/widgets/datagrid/styles/xp/grid.png", "Referer={url}query/User/UserResult.jsp?enterpriseid=10&Username=&page=1", ENDITEM,
                LAST);

    if ((file = fopen(filename, "a+" )) == NULL) {
       lr_output_message("Unable to create %s", filename);
       return -1;
     }

    for(i=1;i<=atoi(lr_eval_string("{name_count}"));i++) {
         sprintf(buffernum, "{name_%d}", i);
                                 strcpy(sname,lr_eval_string(buffernum));
                                   fprintf(file,"%s\n ", sname);
     }
     fclose(file);
               
                return 0;
}

[ 本帖最后由 guxingyun 于 2007-5-23 15:19 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

15#
 楼主| 发表于 2007-6-10 09:46:24 | 只看该作者

通过返回值检查,思路值得借鉴

一篇介绍web_reg_save_param函数的日志,举例说明使用此函数检查文本,看后很受启发。原帖地址 :http://qiguojieshare.spaces.live ... 2C2F486E0!545.entry
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    16#
    发表于 2008-7-14 11:39:10 | 只看该作者
    不错不错,又学习了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 19:41 , Processed in 0.075852 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表