1.线性测试

特点:每一个脚本都是完整且独立的,可以单独执行。

缺点:用例的开发与维护成本很高

2.模块化驱动测试

特点:把重复的操作独立成公共模块,提高测试用例的可维护性

示例:将搜索封装到func中,其他文件直接导入使用即可

func.py

  1. class Func():
  2. def search(self,driver):
  3. driver.find_element_by_xpath("//input[@id='kw' and @class='s_ipt']").send_keys("hello")
  4. driver.find_element_by_xpath("//input[@value='百度一下' and @id='su']").click()
  5. result_text = driver.find_element_by_xpath("//span[@class='nums_text']").text
  6. assert "百度为您找到相关结果约" in result_text

action.py

  1. import sys
  2. from selenium import webdriver;
  3. from time import sleep
  4. from testcase import func
  5. path = sys.path[0].replace("testcase", "") + "driver/geckodriver"
  6. driver = webdriver.Firefox(executable_path=path)
  7. driver.implicitly_wait(5)
  8. driver.get("http://www.baidu.com")
  9. print("打开百度")
  10. func.Func().search(driver)
  11. #等同于
  12. #s=func.Func()
  13. #s.search(driver)
  14. sleep(3)
  15. driver.quit()
  16. print("退出")

3.数据驱动测试

3.1参数化搜索关键字

func.py

  1. from time import sleep
  2. class Func():
  3. def search(self,driver,word):
  4. driver.find_element_by_xpath("//input[@id='kw' and @class='s_ipt']").clear()
  5. driver.find_element_by_xpath("//input[@id='kw' and @class='s_ipt']").send_keys(word)
  6. driver.find_element_by_xpath("//input[@value='百度一下' and @id='su']").click()
  7. result_text = driver.find_element_by_xpath("//span[@class='nums_text']").text
  8. assert "百度为您找到相关结果约" in result_text
  9. sleep(1)

action.py

  1. import sys
  2. from selenium import webdriver;
  3. from testcase import func
  4. path = sys.path[0].replace("testcase", "") + "driver/geckodriver"
  5. driver = webdriver.Firefox(executable_path=path)
  6. driver.implicitly_wait(5)
  7. driver.get("http://www.baidu.com")
  8. print("打开百度")
  9. func.Func().search(driver,"hello")
  10. func.Func().search(driver,"world")
  11. driver.quit()
  12. print("退出")

3.2读取txt文件

read():读取整个文件

readline():读取一行数据

readlins():读取所有行的数据

word.txt

  1. java,廖雪峰
  2. pyhton,菜鸟
  3. selenium,阮一峰

action.py

  1. import sys
  2. from selenium import webdriver;
  3. from testcase import func
  4. path = sys.path[0].replace("testcase", "") + "driver/geckodriver"
  5. driver = webdriver.Firefox(executable_path=path)
  6. driver.implicitly_wait(5)
  7. driver.get("http://www.baidu.com")
  8. print("打开百度")
  9. file = open("word.txt","r")
  10. lines = file.readlines()
  11. file.close()
  12. for i in lines:
  13. searchWord = i.split(',')[0]
  14. func.Func().search(driver,searchWord)
  15. driver.quit()
  16. print("退出")

3.3读取csv文件

word.csv

  1. #读取csv文件
  2. import csv
  3. data = csv.reader(open("word.csv","r"))
  4. for user in data:
  5. print(user,len(user),len(user[0]))


aciton.py
```#python
import csv
import sys
from selenium import webdriver;
from testcase import func

path = sys.path[0].replace("testcase", "") + "driver/geckodriver"

driver = webdriver.Firefox(executable_path=path)

driver.implicitly_wait(5)

driver.get("http://www.baidu.com")

print("打开百度")

data = csv.reader(open("word.csv",'r'))

for row in data:

if len(row[0])==0:

pass

else:

func.Func().search(driver,row[0])

func.Func().search(driver,row[1])

driver.quit()

print("退出")

  1. ## 3.4读取Excel文件
  2. <img src="https://img2018.cnblogs.com/blog/1418970/201811/1418970-20181120151340811-1621898753.png" width="400" />
  3. ```#python
  4. import xlrd
  5. #打开表格
  6. file = xlrd.open_workbook("word.xlsx")
  7. #获取所有sheet,sheet_names()表名
  8. print(file.sheet_names())
  9. #根据sheet索引或名称获取shell内容
  10. sheet1=file.sheet_by_index(0)
  11. sheet2=file.sheet_by_name("工作表 1 - word")
  12. #获取sheet表格的行数和列数
  13. sheet2_row= sheet2.nrows
  14. sheet2_col= sheet2.ncols
  15. print(sheet2.name,sheet2_row,sheet2_col)
  16. #获取每一行的数据
  17. for i in range(sheet2_row):
  18. print("",sheet2.row_values(i))
  19. #获取每一列的数据
  20. for i in range(sheet2_col):
  21. print(sheet2.col_values(i))
  22. # #获取单元格的数据
  23. print(sheet2.cell(2,1).value,sheet2.cell(2,0).value)
  24. #循环打印非空值
  25. for i in range(sheet2_row):
  26. for j in range(sheet2_col):
  27. if len(sheet2.cell(i,j).value) != 0:
  28. print(sheet2.cell(i,j).value)
  1. import xlrd
  2. import sys
  3. from selenium import webdriver;
  4. from testcase import func
  5. path = sys.path[0].replace("testcase", "") + "driver/geckodriver"
  6. driver = webdriver.Firefox(executable_path=path)
  7. driver.implicitly_wait(5)
  8. driver.get("http://www.baidu.com")
  9. print("打开百度")
  10. data = xlrd.open_workbook("word.xlsx")
  11. sheet2_data=data.sheet_by_index(1)
  12. sheet2_rows=sheet2_data.nrows
  13. sheet2_col=sheet2_data.ncols
  14. for i in range(sheet2_rows):
  15. for j in range(sheet2_col):
  16. if i > 0:
  17. text=sheet2_data.cell(i,j).value
  18. if len(text) > 0:
  19. func.Func().search(driver,text)
  20. driver.quit()
  21. print("退出")

3.5读取xml文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--注意:第一行如果直接键入会报错。输入<?xml,然后直接使用tab键生成第一行,删除多余内容即可-->
  3. <info>
  4. <base>
  5. <platform>Windows</platform>
  6. <browser>Firefox</browser>
  7. <url>http://www.baidu.com</url>
  8. <login username="admin" password="123456" />
  9. <login username="guest" password="654321" />
  10. </base>
  11. <test>
  12. <province>北京</province>
  13. <province>广东</province>
  14. <city>深圳</city>
  15. <city>珠海</city>
  16. <province>浙江</province>
  17. <city>杭州</city>
  18. </test>
  19. </info>

http://www.w3school.com.cn/xmldom/dom_nodes.asp

  1. from xml.dom import minidom
  2. dom = minidom.parse('info.xml')
  3. root = dom.documentElement
  4. print(root.nodeName,root.nodeType,root.ELEMENT_NODE)
  5. pros = dom.getElementsByTagName("login")
  6. for pro in pros:
  7. print(pro.getAttribute("username"),pro.getAttribute("password"))
  8. pros = dom.getElementsByTagName("city")
  9. for pro in pros:
  10. print(pro.childNodes[0].data)
  11. #等价于
  12. print(pro.firstChild.data)

4.关键字驱动测试

python selenium-4自动化测试模型的更多相关文章

  1. Python+Selenium学习--自动化测试模型

    前言 一个自动化测试框架就是一个集成体系,在这一体系中包含测试功能的函数库.测试数据源.测试对象识别标准,以及种可重用的模块.自动化测试框架在发展的过程中经历了几个阶段,模块驱动测试.数据驱动测试.对 ...

  2. Python+Selenium UI自动化测试环境搭建及使用

    一什么是Selenium ? Selenium 是一个浏览器自动化测试框架,它主要用于web应用程序的自动化测试,其主要特点如下:开源.免费:多平台.浏览器.多语言支持:对web页面有良好的支持:AP ...

  3. 配置Python+selenium+firefox自动化测试

    1.安装python.默认安装 2.安装pip.下载pip-1.5.4包,解压pip-1.5.4,放在C盘,进入pip目录-->键入命令:python setup.py install  再进入 ...

  4. python selenium web自动化测试完整项目实例

    问题: 好多想不到的地方,中间经历了一次重构,好蛋疼: xpath定位使用的不够熟练,好多定位问题,只能靠强制等待解决: 存在功能重复的方法,因为xpath定位不同,只能分开写,有时间可以继续优化: ...

  5. python selenium+phantomJS自动化测试环境

    0x00配置phantomJS 1. 在windows平台下 此种方法是弹浏览器进行自动化测试的. 1.下载谷歌的驱动 https://chromedriver.storage.googleapis. ...

  6. Python&selenium&tesseract自动化测试随机码、验证码(Captcha)的OCR识别解决方案参考

    在自动化测试或者安全渗透测试中,Captcha验证码的问题经常困扰我们,还好现在OCR和AI逐渐发展起来,在这块解决上越来越支撑到位. 我推荐的几种方式,一种是对于简单的验证码,用开源的一些OCR图片 ...

  7. python + selenium webdriver 自动化测试 之 环境异常处理 (持续更新)

    1.webdriver版本与浏览器版本不匹配,在执行的时候会抛出如下错误提示 selenium.common.exceptions.WebDriverException: Message: unkno ...

  8. python + selenium + unittest 自动化测试框架 -- 入门篇

    . 预置条件: 1. python已安装 2. pycharm已安装 3. selenium已安装 4. chrome.driver 驱动已下载 二.工程建立 1. New Project:建立自己的 ...

  9. Python+Selenium - Web自动化测试(一):环境搭建

    清单列表: Python 3x Selenium Chrome Pycharm 一.Python的安装: Python官网下载地址:https://www.python.org/ 1.  进入官网地址 ...

  10. Python+Selenium - Web自动化测试(二):元素定位

    前言 前面已经把环境搭建好了,现在开始使用 Selenium 中的 Webdriver 框架编写自动化代码脚本,我们常见的在浏览器中的操作都会有相对应的类方法,这些方法需要定位才能操作元素,不同网页的 ...

随机推荐

  1. 【数据库】MFC ODBC(三)

    4.SQL查询 记录集的建立实际上是一个查询过程,SQL的SELECT语句用来查询数据源.在建立记录集时,CRecordset会根据一些参数构造一个SELECT语句来查询数据源,并用查询的结果创建记录 ...

  2. session进行增删改查操作

    一般将针对数据库的操作放在事物里面, 开始事物:session.beginTransaction(); 获取事物:session.getTransaction(); 提交事物:transaction. ...

  3. 2018-2019-2 网络对抗技术 20165202 Exp3 免杀原理与实践

    博客目录 一.基础问题回答 二.实践内容 1.使用msf编码器msfvenom生成后门程序 2.使用msf编码器msfvenom生成jar文件 3.使用veil-evasion生成后门程序及检测 4. ...

  4. Tesseract-OCR 训练教程(二) 合并新的训练文件

    在原有训练数据的基础上,如果有新的字符训练信息需要加入,所有数据重新校准一遍就累死人了.... 经研究找到实用合并方法(红色部分为示例,实际应为你自己生成的文件名): 在新的训练数据生成.box 和. ...

  5. 配置海康相机SDK文件

    前言 项目使用到海康摄像机,进行二次开发需要首先对SDK文件进行相关配置. 实现过程 1.下载SDK开发包: 网址:http://www.hikvision.com/cn/download_61.ht ...

  6. springboot整合jedisCluster

    maven依赖 springboot整合jedisCluster相当简单,maven依赖如下: <dependency> <groupId>org.springframewor ...

  7. Codeforces1106F 【BSGS】【矩阵快速幂】【exgcd】

    首先矩阵快速幂可以算出来第k项的指数,然后可以利用原根的性质,用bsgs和exgcd把答案解出来 #include<bits/stdc++.h> using namespace std; ...

  8. Java Web HelloWorld!

    距离上次做Java Web开发已经两年多了,我几乎忘得一干二净……都忘记咋搭建环境了……,然后Eclipse官网莫名其妙的挂掉.幸好电脑里还有份两年前的开发环境备份…… 重拾Java Web开发啊,说 ...

  9. MySQL Disk--NAND Flash原理

    ====================================================== NAND Flash最小存储单元: 写数据操作: 通过对控制闸(Control Gate) ...

  10. log4net保存到数据库系列二:独立配置文件中配置log4net

    园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...