51Testing软件测试论坛

标题: 如何用winrunner调用excel中的值 [打印本页]

作者: joyceclack    时间: 2006-7-24 11:08
标题: 如何用winrunner调用excel中的值
如何用winrunner调用excel中的值?
比如我要调用一个123.xls中的值,如何调用。
作者: joyceclack    时间: 2006-7-24 13:45
比如,我要测试一个东西的登录。
我把登录的用户名和密码都写在D盘的123.xls文档中。
我现在要winrunner从123.xls一遍遍的读用户名和密码。
不知如何啊?
sdlkfj9哪位大虾帮帮忙。
最好举一个有代码的例子。
作者: 生如火花    时间: 2006-7-24 14:06
参考ddt系列的函数吧,具体的例子我手上没有
作者: jjqyyf    时间: 2006-7-24 16:07
table = "default.xls";
        rc = ddt_open(table, DDT_MODE_READ);
        if (rc!= E_OK && rc != E_FILE_OPEN)
                pause("Cannot open table.");
        ddt_get_row_count(table,table_RowCount);
        for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
                {
                ddt_set_row(table,table_Row);
          
       
        # workspace
                set_window("workspace",4);
                button_press("添加");
                web_sync(6);
               
                edit_set("rolename",ddt_val(table,"rolename"));
                pause(ddt_val(table,"rolename"));
                edit_set("rolenote",ddt_val(table,"rolenote"));
                button_press("确定");
                button_set("check",ON);
                button_press("删除");

                }
        ddt_close(table);
作者: joyceclack    时间: 2006-7-24 17:19
楼上的,可否说明一下,看的不太懂
作者: jjqyyf    时间: 2006-7-25 09:41
你用Table->Data Driver Wizard加入数据驱动,很多代码就自动生成了。然后再在excel表中添加你要测试的数据即可。
作者: 梦醒十分    时间: 2006-7-25 10:47
标题: 给你我写的一个数据表练习题课件
给你我写的一个数据表练习题课件:
问题:
1:在D盘根目录下建立两个Excel表
   命名为table1 和 table2。
2:在table1表中建立id和name两列。
   并输入数据如:id列中输入1~5,name列中输入a~e共5行。
   关闭两个表。
   以上两步不用WR。

3:用WR打开两个表,并用语句来判断表是否被打开。
   提示:注意路径中使用\\
4:利用偱环语句将table1中的name列的值全部改写为你的名字。
   提示:重点是要获取表中的行数来作为循环的次数。
5:保存table1。
6: 把table1数据完全导入空表table2中。
7:保存table2。
8:关闭所有的表。

9:查验结果。
提示同一个表不能被连续两次打开!

答案代码:
ddt_close_all_tables();
table1="d:\\table1.xls";
table2="d:\\table2.xls";
if(ddt_open(table1,DDT_MODE_READWRITE)==E_OK)
{pause("table1_open");}
if(ddt_open(table2,DDT_MODE_READWRITE)==E_OK)
{pause("table2_open");}
ddt_get_row_count(table1,row_count);
for(i=1;i<=row_count;i++)
{
ddt_set_val_by_row(table1,i,"name","Liuxuedong");
}

ddt_save(table1);
ddt_export(table1,table2);
ddt_save(table2);
ddt_close_all_tables();
作者: zhangjinyun99    时间: 2006-7-25 11:00
那请问如何将数据库中的数据导入到数据表中呢
作者: joyceclack    时间: 2006-7-25 14:17
太感谢“梦醒十分”了,后来经过反复练习,发现是tools->DataDriver Wizard这个使用数据导入,就会自动产生一些代码。
挺方便的。
上面的例子,我也再练习练习。
作者: shiwomyw    时间: 2006-8-28 10:31
梦醒十分 ,你好!我在机子上运行了你写的代码,对用到的这些函数有了解了,呵呵谢谢!有一个问题不太明白,在执行过程中弹出过这个框,这是不是在提示是否打开表的意思呢?不是错误提示吧?
还有,如果两张表都是打开的,也能执行,但什么也没做,这是怎么处理的?为什么这样处理??
代码中的第一句,ddt_close_all_tables();,关闭的是哪些表,如果我打开了D盘下的表,执行代码后它怎么不关闭呢?是不是有问题啊???
期望回答!!!
作者: 小李美刀    时间: 2006-8-29 15:16
标题: 我来说俩句
如果这俩表都是打开的话,俩个pause()语句就没有执行,说明 if 语句判断的结果是假,则说明程序没有打开这俩个表,所以没有对表做任何操作.

改一下判断条件,如果有对话框弹出就说明该表在程序执行中没有被打开:
if(ddt_open(table1,DDT_MODE_READWRITE)!=E_OK)
{pause("table1_open");}
if(ddt_open(table2,DDT_MODE_READWRITE)!=E_OK)
{pause("table2_open");}
作者: shiwomyw    时间: 2006-8-30 09:07
楼上的,你好!你说的意思我明白了。但还有一点,如果两张表是打开的,执行代码开头一句ddt_close_all_tables();,应该可以把打开的所有表关闭。不是吗?可实际却没有???是我理解有问题吗???
作者: gp_jl    时间: 2006-9-30 23:38
楼上的:ddt_close_all_tables() 是可以把 “使用ddt_open或ddt_show”打开的所有表关闭。

The ddt_close_all_tables function closes all open tables in all open tests.   Note that this includes any tables that are open in the table editor, tables that were opened using the ddt_open or ddt_show functions or/and using the DataDriven Tests Wizard.
作者: shiwomyw    时间: 2006-10-10 14:29
噢,明白了!:)
作者: hf51ceshi    时间: 2006-10-10 15:08
都是高手啊~~~
作者: luxiqiang1    时间: 2006-10-10 16:46
哎~!高手
作者: lafang_30    时间: 2007-2-3 17:00
真是高手如云呀!
作者: huanghaizilu    时间: 2007-3-17 16:06
标题: 参考数据驱动
参考数据驱动
作者: hjjlearning    时间: 2007-3-19 17:58
问个问题
我用DataDriver Wizard加入,然后读取里面的数据(也是登陆的例子)
数据是自己手动加的
如果登陆的密码是加密了的,那怎么办
有什么解决的方法不,要不的话就是录制的那个用户名和密码是正确的
其他的都是错误的,因为手动加的密码都是明文


求解
作者: dionysus    时间: 2007-3-19 22:28
你录制密码输入的地方是否是password_edit_set()这个函数?如果想做数据驱动就把这块改为edit_set(),这样输入的密码就不是加密的了,可以循环
作者: jacky9947    时间: 2007-3-23 15:44
谢谢版主,我明白了
作者: xiaohuo37    时间: 2007-4-30 14:08
原帖由 梦醒十分 于 2006-7-25 10:47 发表
给你我写的一个数据表练习题课件:
问题:
1:在D盘根目录下建立两个Excel表
   命名为table1 和 table2。
2:在table1表中建立id和name两列。
   并输入数据如:id列中输入1~5,name列中输入a~e共5行。
...



我试这做了下这个例子,可是很奇怪无法打开2张表。 运行脚本前  2张表是关闭状态的。  无法打开表有可能是什么原因呢?   难道是什么地方写错了? 应该没有啊,是照搬例子的哦。请大家帮忙看看,谢谢

脚本如下:
ddt_close_all_tables();
talbe1="E:\\1.xls";
talbe2="E:\\2.xls";
if(ddt_open(table1,ddt_mode_readwrite)==E_OK)
{pause("table1_open");}
if(ddt_open(table2,ddt_mode_readwrite)==E_OK)
{pause("table2_open");}
ddt_get_row_count(table1,row_count);
for(i=0;i<=row_count;i++)
{
        ddt_set_val_by_row(table1,i,"name","lj");
}
ddt_save(table1);
ddt_export(table1,table2);
ddt_save(table2);
ddt_close_all_tables();

[ 本帖最后由 xiaohuo37 于 2007-4-30 14:19 编辑 ]
作者: tim_feng    时间: 2007-5-16 13:40
标题: 回复 #1 joyceclack 的帖子
sdlkfj3
作者: tim_feng    时间: 2007-5-16 13:40
sdlkfj1
作者: huamini    时间: 2007-9-7 11:39
标题: 回复 #7 梦醒十分 的帖子
讲的还好,对我有帮助,谢谢!sdlkfj3
作者: huamini    时间: 2007-9-7 12:04
标题: 请教:data table如何关联输入日期问题?
我在学用winrunner过程中,也是用Flight 4A作为测试的程序,现在我想把Date_of_Flight(本来是输入值)关联到data table中Date_of_Flight列直接在数据表中输入一些日期,但是不明白那里出问题,每次在我点击运行过程中还是提示输入日期。我的代码如下:
table = "test.xls";
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
        pause("Cannot open table.");
ddt_get_row_count(table,table_RowCount);
for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
{
        ddt_set_row(table,table_Row);
        set_window ("Flight Reservation", 14);
                menu_select_item ("File;New Order");
         edit_set ("Date of Flight", ddt_val(table,"Date_of_Flight"));                                        list_select_item ("Fly From:", ddt_val(table,"Fly_From"));  # Item Number 1;
        list_select_item ("Fly To:", ddt_val(table,"Fly_To"));  # Item Number 1;
        wait(5);
        obj_mouse_click ("FLIGHT", 36, 37, LEFT);       
}
ddt_close(table);
。。。。
作者: dionysus    时间: 2007-9-7 13:12
你是说参数化后日期没有输入成功么?你把excel表中的内容截个图放上来吧
作者: 追逐日光    时间: 2008-11-20 10:36
真行呀,高手中的高高手
作者: stevecaozhe    时间: 2008-12-9 17:55
标题: 回复 8# 的帖子
就看你用什么数据库了,一般都会有导出保存为XLS文件的功能,这样不就导出到数据表了吗!
作者: sunrise_cx    时间: 2009-2-13 12:50
为什么我按照“梦醒十分”的例子做了后,发现table1,table2没有发生任何变化。但是莫名其妙又出来了两个名称为table1,table2的文档。
作者: sunrise_cx    时间: 2009-2-13 12:51
在线等原因。。。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2