51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2295|回复: 7
打印 上一主题 下一主题

[原创] 关于从EXCEL中取数据的问题

[复制链接]
  • TA的每日心情
    开心
    2023-2-8 16:18
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]测试连长

    跳转到指定楼层
    1#
    发表于 2010-3-15 13:21:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    我这有段录制的脚本,现在想调用EXCEL中的数据来测试,不知道怎么弄,高手帮忙解决下,谢谢了

    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日.天下通 - 中国最大的电子客票交易平台").WebEdit("Uname").Set "test125"
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日.天下通 - 中国最大的电子客票交易平台").WebEdit("Passwd").SetSecure "4b99d3f3a17c7c9f3feffe617953bde090ba"
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日.天下通 - 中国最大的电子客票交易平台").WebEdit("CheckCode").Set "0000"
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日.天下通 - 中国最大的电子客票交易平台").Image("login").Click 23,7
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("leftFrame").WebElement("在线订单管理").Click
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("leftFrame").Link("所有订单查询").Click
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("mainFrame").WebRadioGroup("SeaWay").Select "OrderNo"
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("mainFrame").WebEdit("SearchKey").Set "10030414144065922517"
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("mainFrame").WebButton("立 即 查 询").Click
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("mainFrame_2").Link("10030414563965922363").Click
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("mainFrame_3").WebList("Cause").Select "按客规自愿退票"
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("mainFrame_3").WebRadioGroup("rblIsCancelSeat").Select "是"
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("mainFrame_3").WebEdit("Remark").Set "测试"
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("mainFrame_3").WebButton("申请退票").Click
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Sync
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Close

    我想把下面这段脚本中的“10030414144065922517”用本地D盘中的EXCEL中的数据代替,改怎么弄

    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("mainFrame").WebEdit("SearchKey").Set "10030414144065922517"
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2010-3-15 15:55:09 | 只看该作者
    假设10030414144065922517放在D:\TestCase.xls的第2行第1列
    Set  excelApp =  CreateObject("Excel.Application")
    num=excelApp.Workbooks.open("D:\TestCase.xls").WorkSheets("测试用例").Cells(2,1) '将EXCEL的第2行第1列数据赋给num
    excelApp.Quit '关闭EXCEL
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("mainFrame").WebEdit("SearchKey").Set num

    '最好写成函数,将该函数添加到QTP的function libraries中,或使用ExecuteFile"函数的路径",这样在需要的读取EXCEL数据的地方都可以直接调用了:
    Public Function GetData(ExcelPath,Row,Col)
    Set  excelApp =  CreateObject("Excel.Application")
    GetData=excelApp.Workbooks.open(ExcelPath).WorkSheets("测试用例").Cells(Row,Col)
    excelApp.Quit
    End Function

    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("mainFrame").WebEdit("SearchKey").Set  GetData("D:\TestCase.xls",2,1)

    [ 本帖最后由 feiyunkai 于 2010-3-15 16:03 编辑 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
    发表于 2010-3-15 16:31:34 | 只看该作者

    另外一种方法是先将EXCEL中数据Import到QTP的DATATABLE中,然后再使用,方法如下:

    '假设数据存放在D:\TestCase.xls的Sheet1中且的第二行列名为num。注:由于EXCEL中第一行被QTP默认为列名,所以是读不到的
    Browser("今日.天下通 - 中国最大的电子客票交易平台").Page("今日·天下通 - www.JinRi.net.cn").Frame("mainFrame").WebEdit("SearchKey").Set GetData("D:\TestCase.xls","Sheet1","num","1")

    Public function GetData(ExcelPath,SheetName,ColName,row)      
    'ExcelPath:   EXCEL路径
    'SheetName:sheet名
    'ColName:    列     名         
            DataTable.AddSheet SheetName                                         '在QTP中添加名称为SheetName的数据表
            DataTable.ImportSheet ExcelPath,SheetName,SheetName  '将EXCEL中数据Import到SheetName数据表
            DataTable.SetCurrentRow (row)                                           '设置需要读取的数据所在的行
            GetData=DataTable(ColName,SheetName)                          '取SheetName数据表中指定列的数据
    End Function

    [ 本帖最后由 feiyunkai 于 2010-3-15 16:39 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2010-3-15 16:43:46 | 只看该作者
    肯定要先导入,否则会等死,EXCEL打开很慢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-8 16:18
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]测试连长

    5#
     楼主| 发表于 2010-3-16 18:00:40 | 只看该作者

    回复 2# 的帖子

    我用这两种方法都提示下标越界,不知道咋回事

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
    发表于 2010-3-17 18:14:59 | 只看该作者
    原帖由 goopy 于 2010-3-16 18:00 发表
    我用这两种方法都提示下标越界,不知道咋回事
    这2种方法我都试过,是可以用的,报下标越界有2种原因,一是SHEET不存在,二是该SHEET指定的行中没有数据
    方法一报错原因是你没修改函数中的Sheet名称导致的
    方法二报错原因可能是你GetData("D:\TestCase.xls","Sheet1","num","1")中的1写成了2或"num"没修改为"测试用例"


    看你截图中的报错信息,是因为你把列名当成了SHEET名称


    [ 本帖最后由 feiyunkai 于 2010-3-17 18:29 编辑 ]

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-8 16:18
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]测试连长

    7#
     楼主| 发表于 2010-3-17 23:15:35 | 只看该作者
    我现在问题已经解决了,还有点不明白,2#的方法为什么取值是从第二行开始,而3#的方法取值是从第一行开始的,EXCEL中第一行不是被QTP默认为列名么,应该是读不到的啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2010-3-18 10:16:31 | 只看该作者
    方法1是用户指定去读某行某列的值当作数据用。
    方法2是借用QTP使用数据表的习惯。

    一个“全控制”,一个“借别人的手”。
    当然不一样。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-11 14:12 , Processed in 0.081527 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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