当前位置: 首页 > news >正文

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

本篇文章转载至苦叶子;
 
前言
今天我们就如何使用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自动化测试过程参数化相应的输入数据和期望结果。

转载于:https://www.cnblogs.com/harry-xiaojun/p/6708356.html

相关文章:

  • min-height和height
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 问题解答
  • 华为机试题-字符串分隔
  • 微软轻量级“代码生成器”—Repository Factory使用(下)
  • 《关于组织申报2017年度高新技术企业的通知》
  • 狼的故事11:以牙还牙
  • sql server 排序规则
  • windows server上联系人和用户的区别
  • tomcat 7下spring 4.x mvc集成websocket以及sockjs完全参考指南(含nginx/https支持)
  • 解决inline-block左右不能对齐
  • 使用ActiveReports for .net 进行报表开发(九)--End User (转)
  • test silverlight
  • 2017软考信息系统项目管理师软考热点
  • 本周链接列表(2007.12.10-2007.12.16)
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • idea + plantuml 画流程图
  • Java比较器对数组,集合排序
  • Service Worker
  • Solarized Scheme
  • 从PHP迁移至Golang - 基础篇
  • 技术:超级实用的电脑小技巧
  • 爬虫模拟登陆 SegmentFault
  • 嵌入式文件系统
  • 深度学习中的信息论知识详解
  • 温故知新之javascript面向对象
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 智能合约Solidity教程-事件和日志(一)
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​如何在iOS手机上查看应用日志
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (007)XHTML文档之标题——h1~h6
  • (bean配置类的注解开发)学习Spring的第十三天
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)iOS字体
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • . NET自动找可写目录
  • .Net Core与存储过程(一)
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .Net Memory Profiler的使用举例
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .net 验证控件和javaScript的冲突问题
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .NET使用存储过程实现对数据库的增删改查
  • @Pointcut 使用
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [ESP32] 编码旋钮驱动