转载:https://blog.csdn.net/zhusongziye/article/details/80100375

前言

今天我们就如何使用xlrd模块来进行python selenium2 + excel自动化测试过程中的参数化进行演示说明,以解决大家在自动化测试实践过程中参数化的疑问。

环境安装

xlrd是python用于读取excel的第三方扩展包,因此在使用xlrd前,需要使用以下命令来安装xlrd。

pip install xlrd

xlrd基本用法

  1. 导入扩展包

import xlrd
  1. 打开excel文件

excel = xlrd.open_workbook(u'excelFile.xls')
  1. 获取工作表

# 通过索引顺序获取
table = excel.sheets()[0]
table = excel.sheet_by_index(0) # 通过工作表名获取
table = excel.sheet_by_name(u'Sheet1')
  1. 获取行数和列数

# 获取行数
nrows = table.nrows # 获取列数
ncols = table.ncols
  1. 获取整行或整列的值

# 其中i为行号, j为列号# 行号、列号索引从0开始

row_values = table.row_values(i)

col_values = table.col_values(j)
  1. 获取指定单元格数据

# i-行号, j-列号
value = table.cell(i, j).value # 例如获取第一行、第一列的数据
value = table.cell(0, 0).value
  1. 循环行遍历列表数据

# 先获取行数
nrows = table.nrows # 遍历打印所有行数据
for i in range(0, nrows):
   print table.row_values(i)

至此我们将xlrd基本常用的技巧和方法都一一列举完毕,下面我们一起看一下如何利用xlrd来实现python selenium2自动化测试参数化。

代码示例

我们以上一章我们的第一个python selenium2测试代码为蓝本,进行改造,从excel中读取以下格式的数据来进行测试, 请将下列表格数据存入名为baidu_search.xlsx的excel文件。

序号 搜索词 期望结果
1 开源优测 开源优测_百度搜索
2 别啊 别啊_百度搜索
3 尼玛,能不能动手分享下? 尼玛,能不能动手分享下?_百度搜索
# 将以下代码保存到first_webdriver.py中

#-*- coding:utf-8 -*-

from selenium import webdriver
import unittest
import HTMLTestRunner  import sys
from time import sleep
import xlrd reload(sys)
sys.setdefaultencoding("utf-8") class LoadBaiduSearchTestData:
   def __init__(self, path):
       self.path = path    
   def load_data(self):
       # 打开excel文件
       excel = xlrd.open_workbook(self.path)        
       # 获取第一个工作表
       table = excel.sheets()[0]        
       # 获取行数
       nrows = table.nrows  
        
       # 从第二行开始遍历数据
       # 存入一个list中
       test_data = []       
       for i in range(1, nrows):
           test_data.append(table.row_values(i))      
 
       # 返回读取的数据列表    
       return test_data class BaiduTest(unittest.TestCase):
   """百度首页搜索测试用例"""
   def setUp(self):
       self.driver = webdriver.Firefox()
       self.driver.implicitly_wait(30)
       self.base_url = u"http://www.baidu.com"
       self.path = u"baidu_search.xlsx"
       
   def test_baidu_search(self):
       driver = self.driver        
       print u"开始[case_0001]百度搜索"        
       
       # 加载测试数据
       test_excel = LoadBaiduSearchTestData(self.path)
       data = test_excel.load_data()        
       print data
 
             
       # 循环参数化
       for d in data:            
           # 打开百度首页
           driver.get(self.base_url)            
           # 验证标题
           self.assertEqual(driver.title, u"百度一下,你就知道")
           sleep(1)
           
           driver.find_element_by_id("kw").clear()            
           # 参数化 搜索词
           driver.find_element_by_id("kw").send_keys(d[1])
           sleep(1)
           driver.find_element_by_id("su").click()
           sleep(1)            
           # 参数化 验证搜索结果标题
           self.assertEqual(driver.title, d[2])
           sleep(2)            
       
   def tearDown(self):
       self.driver.quit()        if __name__ == '__main__':
   testunit = unittest.TestSuite()
   testunit.addTest(BaiduTest('test_baidu_search'))    
   # 定义报告输出路径
   htmlPath = u"testReport.html"
   fp = file(htmlPath, "wb")
   
   runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
          title=u"百度测试",
          description=u"测试用例结果")
   
   runner.run(testunit)
   
   fp.close()

总结

在上文中,我们详细的描述了xlrd操作excel的各种方法和技巧,以及封装xlrd读取excel实现在python selenium自动化测试过程参数化相应的输入数据和期望结果。

最重要的还是需要大家自己多练习相关的代码,并能做相应的扩展, 同时要去有针对性的学习对应的库,深入了解其使用方法和技巧,甚至原理。

转 基于Excel参数化你的Selenium2测试的更多相关文章

  1. 基于Excel参数化你的Selenium2测试-xlrd

    本篇文章转载至苦叶子:   前言 今天我们就如何使用xlrd模块来进行python selenium2 + excel自动化测试过程中的参数化进行演示说明,以解决大家在自动化测试实践过程中参数化的疑问 ...

  2. 基于Excel参数化你的Selenium2测试代码

  3. 基于excel的接口自动化测试框架:支持参数化、关联等

    1. 框架结构说明 2. 框架代码实现 action 包  case_action.py business_process 包 main_process.py util 包 global_var.py ...

  4. [其他] 蒙特卡洛(Monte Carlo)模拟手把手教基于EXCEL与Crystal Ball的蒙特卡洛成本模拟过程实例:

    http://www.cqt8.com/soft/html/723.html下载,官网下载 (转帖)1.定义: 蒙特卡洛(Monte Carlo)模拟是一种通过设定随机过程,反复生成时间序列,计算参数 ...

  5. 10月12号 晚八点 Speed-BI 云平台-基于Excel数据源的管理驾驶舱构建全过程,腾讯课堂开课啦

    认真地做了一大摞一大摞的报表,老板没时间看?努力把能反馈的内容都融汇进图表里,老板嫌复杂?做了几个简单的报表,老板一眼就觉得信息不全面?每个报表都用了各种各样的图表,老板却毫无兴趣?明明很努力了,为什 ...

  6. PowerDesigner数据库设计PDM基于Excel的导入导出总结

    经常用到pdm来管理代码,一两张表,手写一下还凑合,一旦表多了,就慌了.于是,开始学习用vbs进行Excel的来快速导入导出操作PDM就变得很紧急了,搜罗了网络上的很多vbs脚本,各有各的优点,但对于 ...

  7. 基于USB3.0的双目相机测试小结之CC1605配合CS5642 双目 500w摄像头

    基于USB3.0的双目相机测试小结之CC1605配合CS5642  双目 500w摄像头 CC1605双目相机评估板可以配合使用柴草电子绝大多数摄像头应用 如:OV5640.OV5642.MT9P03 ...

  8. 基于linux下的NIST数字测试包安装过程

    基于linux下的NIST数字测试包安装过程 1. 首先解决windows文件不能粘贴到Ubuntu的问题 选择利用VMware Tools进行解决 打开虚拟机VMware Workstation,启 ...

  9. 《数据分析实战:基于EXCEL和SPSS系列工具的实践》一1.4 数据分析的流程

    本节书摘来华章计算机<数据分析实战:基于EXCEL和SPSS系列工具的实践>一书中的第1章 ,第1.4节,纪贺元 著 更多章节内容可以访问云栖社区"华章计算机"公众号查 ...

随机推荐

  1. docker中mysql数据库的数据导入和导出

    导出数据 查看下 mysql 运行名称 docker ps 结果:  执行导出(备份)数据库命令: 由第一步的结果可知,我们的 mysql 运行在一个叫 mysql_server 的 docker ...

  2. Docker 下载镜像慢的问题解决方法

    让你火箭般的速度下载docker镜像! 的冷漠度 百家号17-11-1713:09 因为有墙的原因所以在国内下载docker镜像的速度非常慢,有时候是几kb每秒,那个蛋疼的等待,真是谁等谁知道!下面我 ...

  3. MinFilter(MaxFilter)快速算法C++实现

    目录 1.算法简述 1.1.MinFilter(MaxFilter) 算法简述 1.2.MinFilter(MaxFilter) 快速算法简述 2.实现代码 2.1.MinFilterOneRow 单 ...

  4. 高仿MT4行情终端(K线图+操控+简单架构)

    技术:VS2015 Update3 + QT 5.11.2 + BOOST 1.68 + QT VS Tools + C++11   概述 模仿外汇MT4的界面 详细 代码下载:http://www. ...

  5. 《Java 9 揭秘》全目录汇总

    Tips 做一个终身学习的人. 当写这篇文章时,关于Java 9的学习就先告一段落了. 首先介绍一下背景,大概两个月前,我突然有兴趣想看看Java 9,当时读了一本英文原著<Java 9 Rev ...

  6. 【转载】springboot四 全局异常处理

    http://tengj.top/2018/05/16/springboot13/ https://www.jb51.net/article/110533.htm

  7. c语言搜索子字符串

    c字符串功能练习: 获取一行字符串,然后,在这行字符串中搜索是否包含一个小字符串 #include <cstdio> #include <cstring> #define N ...

  8. repo命令详解

    Android 为企业提供一个新的市场,无论大企业,小企业都是处于同一个起跑线上.研究 Android 尤其是 Android 系统核心或者是驱动的开发,首先需要做的就是本地克隆建立一套 Androi ...

  9. Airtest iOS测试环境部署

    [本文出自天外归云的博客园] 简介 这个Airtest IDE是通过iOS-Tagent来操作iPhone的,你可以在Airtest IDE里录制脚本来实现自动化操作iPhone 前提 1. 得有个i ...

  10. windows保存的文件传输到linux中格式转换

    直接从window传输到linux的脚本执行时,会出现以下错误. -bash: xxx: /bin/sh^M: bad interpreter: No such file or directory 解 ...