51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4143|回复: 6
打印 上一主题 下一主题

selenium数据驱动测试之Excel

[复制链接]
  • TA的每日心情
    无聊
    2015-8-10 08:24
  • 签到天数: 27 天

    连续签到: 1 天

    [LV.4]测试营长

    跳转到指定楼层
    1#
    发表于 2015-7-27 17:24:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    弄了一天了,还是没找到一种比较理想的模式来进入excel的数据驱动测试,哪位有经验的大牛给指点指点吧,万分感谢!!
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2015-7-28 08:58:30 | 只看该作者
    我来献丑一下吧。将用例写在Excel中,遍历执行每条测试用例并将测试结果写入原Excel(或新建一个Excel)中。这样需要保证每条用例都能正常执行(如果出现定位元素失败等情况可以做异常处理并继续下一条测试用例),否则会导致Excel破损。最近我将测试报告以HTML页面形式返回,这样就省去了修改Excel的耗时,提高了脚本执行效率。那如果有更为合适的做法呢,也请大神指点了。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    15 小时前
  • 签到天数: 2820 天

    连续签到: 2 天

    [LV.Master]测试大本营

    3#
    发表于 2015-7-28 10:34:40 | 只看该作者
    数据驱动,必须有数据来控制测试的业务流,而把参数化的东西写在EXCEL里,然后在跑脚本时调用,其实不是数据驱动,而只是较高级的参数化。比如你测一个WEB程序,有很多页面,你可以通过一个数据来控制每次是再哪个页面下工作的(即通过数据来导航到相应的页面)。它是关键字驱动的低级版本,他控制的是函数级的,而关键字是控制动作级的。所以数据驱动应该是可以控制整个测试的.
    目前大家一般都照着业务流程,按原子模块写一系列的函数,在函数中,对不通的参数做不同的分支处理。对一系列的函数赋不通的参数,就可以组合出非常多的case,达到数据驱动的目的.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-8-10 08:24
  • 签到天数: 27 天

    连续签到: 1 天

    [LV.4]测试营长

    4#
     楼主| 发表于 2015-7-28 10:48:26 | 只看该作者
    大侠,  那用excel参数化的时候,我该怎么写函数 来读取excel中的数据
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-8-10 08:24
  • 签到天数: 27 天

    连续签到: 1 天

    [LV.4]测试营长

    5#
     楼主| 发表于 2015-7-28 10:48:42 | 只看该作者
    jingzizx 发表于 2015-7-28 10:34
    数据驱动,必须有数据来控制测试的业务流,而把参数化的东西写在EXCEL里,然后在跑脚本时调用,其实不是数据 ...

    大侠,  那用excel参数化的时候,我该怎么写函数 来读取excel中的数据
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    6#
    发表于 2015-7-28 12:29:03 | 只看该作者
    读取excel的数据可以用jxl。。。比如举个例子:
    public static String[][] getDataByTableName(String xlFilePath, String sheetName, String tableName) {

        String[][] tabArray = null;
        try {
          InputStream stream = Tools.class.getClassLoader().getResourceAsStream(xlFilePath);
          Workbook workbook = Workbook.getWorkbook(stream);
          Sheet sheet = workbook.getSheet(sheetName);
          int startRow, startCol, endDashRow, endCol, ci, cj;
          Cell tableStart = sheet.findCell(tableName);
          startRow = tableStart.getRow();
          startCol = tableStart.getColumn();

          Cell endDashCell = sheet.findCell(tableName, startCol + 1, startRow + 1, 100, 64000, false);

          endDashRow = endDashCell.getRow();
          endCol = endDashCell.getColumn();
          tabArray = new String[endDashRow - startRow - 1][endCol - startCol - 1];
          ci = 0;

          for (int i = startRow + 1; i < endDashRow; i++, ci++) {
            cj = 0;
            for (int j = startCol + 1; j < endCol; j++, cj++) {
              tabArray[ci][cj] = sheet.getCell(j, i).getContents();
            }
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
        return (tabArray);
      }

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 恭喜你获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    15 小时前
  • 签到天数: 2820 天

    连续签到: 2 天

    [LV.Master]测试大本营

    7#
    发表于 2015-7-28 14:55:59 | 只看该作者
    此岸花开 发表于 2015-7-28 10:48
    大侠,  那用excel参数化的时候,我该怎么写函数 来读取excel中的数据

    你参考下:http://www.51testing.com/html/63/n-1546663.html
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-26 22:57 , Processed in 0.069403 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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