本篇文章转载至苦叶子;
 
前言
今天我们就如何使用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 -*-
__author__ = u'苦叶子'
 
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测试-xlrd的更多相关文章

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

    转载:https://blog.csdn.net/zhusongziye/article/details/80100375 前言 今天我们就如何使用xlrd模块来进行python selenium2 ...

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

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

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

  4. 自动化不知如何参数化(二)?xlrd来帮你解决

    在昨天的博文中介绍了普通单元格数据的获取,以及单元格数据类型的转换,详细见博文:自动化不知如何参数化(一)?xlrd来帮你解决. 昨天的那篇博文中,还有个获取合并单元格数据的问题没解决,今天就专门来讲 ...

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. Java面试题(设计模式篇+Spring/Spring MVC篇)

    设计模式 88.说一下你熟悉的设计模式? 自行熟悉. 89.简单工厂和抽象工厂有什么区别? 简单理解简单工厂:对 一个对象的创建进行封装.抽象工厂:对 一组对象的创建进行封装. 比如生产 陶瓷马 和  ...

  2. 【Android】在开发项目的时候,利用AndroidStudio开发工具,突然一直报错。

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985, QQ986945193 公众号:程序员小冰 首先说明,虽然报错,但是并不影响开发使用.但是感觉很不爽 ...

  3. Mybatis入门篇之结果映射,你射准了吗?

    目录 前言 什么是结果映射? 如何映射? 别名映射 驼峰映射 配置文件开启驼峰映射 配置类中开启驼峰映射 resultMap映射 总结 高级结果映射 关联(association) 例子 关联的嵌套 ...

  4. 面试【JAVA基础】锁

    1.锁状态 锁的状态只能升级不能降级. 无锁 没有锁对资源进行锁定,所有线程都能访问并修改同一个资源,但同时只有一个线程能修改成功.其他修改失败的线程会不断重试,直到修改成功,如CAS原理和应用是无锁 ...

  5. [BUUOJ记录] [BJDCTF 2nd]old-hack & Schrödinger & elementmaster

    三道比较简单的的题放一起一写,old-hack是ThinkPHP框架的一个nday,Schrödinger和elementmaster没啥考点,就是脑洞 一.old-hack 进入题目没发现什么Hi ...

  6. 关于ASP.NET MVC的权限认证的一些总结

    最近在学ASP.NET MVC的权限认证的一些东西,上网搜索了一阵,发现网上的方法大多数是以下几类: 一.FormsAuthentication.SetAuthCookie(admin.Name, f ...

  7. servlet web项目连接数据库报错

    报错信息类似这样: Wed May 27 14:15:54 CST 2020 WARN: Establishing SSL connection without server's identity v ...

  8. JavaWeb实现图片上传功能

    首先导入文件上传的jar包 然后在Spring-servlet.xml文件中设置上传文件解析器 <!--上传文件解析器--> <bean id="multipartReso ...

  9. 【高并发】Redis如何助力高并发秒杀系统,看完这篇我彻底懂了!!

    写在前面 之前,我们在<[高并发]高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!>一文中,详细讲解了高并发秒杀系统的架构设计,其中,我们介绍了可以使用Redis存储秒杀商品的库存数量.很 ...

  10. 掌控安全sql注入靶场pass-05

    1.判断注入点 1 and 1=1 1 and 1=2 考虑存在布尔盲注 布尔盲注解释 当不能像前面那样直接在网页中显示我们要的数据时就需要用到盲注,来得到数据库之类的名字.基于布尔的盲注就是通过判断 ...