Selenium(八)测试用例的设计与模块化
一.设计测试用例
1.分析我之前写的登录脚本:
from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait url = 'http://www.maiziedu.com/'
login_path = '/html/body/div[2]/div/div/div/div/a[2]'
account = 'xxx' #这里需填实际的账号
pwd = 'maizi123456' #预先设定好网址和账号密码 def get_ele_times(driver,times,func):
return WebDriverWait(driver,times).until(func) #等待方法 def login_test():
driver = webdriver.Firefox() #open firefox
driver.get(url) #打开url
time.sleep(1)
driver.maximize_window() #最大化窗口 ele_login = get_ele_times(driver,10,\
lambda driver:driver.find_element_by_xpath(login_path))
ele_login.click() #找到登录,然后点击
#相当于:driver.find_element_by_link_text(login_text).click() account_ele = driver.find_element_by_xpath('//*[@id="id_account_l"]')
account_ele.send_keys('')
account_ele.send_keys(account) password_ele = driver.find_element_by_xpath('//*[@id="id_password_l"]')
password_ele.send_keys('')
password_ele.send_keys(pwd) driver.find_element_by_xpath('//*[@id="login_btn"]').click()
try:
driver.find_element_by_link_text('该账号不正确')
print ("ACCOUNT AND PWD ERROR!")
except:
print ("ACCOUNT AND PWD RIGHT!") if __name__ == '__main__':
login_test()
2.分析脚本功能是否可以模块化
3.模块化与数据隔离
4.修改后的模型
二.测试用例模块化
1.
2.模块化的代码:
from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import WebDriverWait url = 'http://www.maiziedu.com/'
login_xpath = '/html/body/div[2]/div/div/div/div/a[2]'
account = 'XXX'
pwd = 'maizi123456' #预先设定好网址和账号密码 def openBrower(): #配置浏览器
webdriver_handle = webdriver.Firefox()
return webdriver_handle def openUrl(handle,url): #打开url
handle.get(url) def get_ele_times(driver,times,func):
return WebDriverWait(driver,times).until(func) #等待方法 def findElement(driver,arg):
'''
arg must be dict
1.user_xpath:用户名
2.pwd_xpath:密码
3.login_xpath:登录按钮
return useEle,pwdEle,loginEle
''' useEle = driver.find_element_by_xpath(arg['user_xpath'])
pwdEle = driver.find_element_by_xpath(arg['pwd_xpath'])
loginEle = driver.find_element_by_xpath(arg['login_xpath'])
return useEle,pwdEle,loginEle def sendVals(eletuple,arg):
'''
ele tuple
account:uname,pwd
'''
listkey = ['uname','pwd']
i = 0
for key in listkey:
eletuple[i].send_keys('')
eletuple[i].clear()
eletuple[i].send_keys(arg[key])
i+=1
eletuple[2].click()
def checkResult(driver,text):
try:
driver.find_element_by_link_text(test)
print ("ACCOUNT AND PWD ERROR!")
except:
print ("ACCOUNT AND PWD RIGHT!") def login_test():
driver = openBrower()
openUrl(driver,url)
driver.maximize_window()
ele_login = get_ele_times(driver,10,lambda driver:driver.find_element_by_xpath(login_xpath))
ele_login.click()
#字典
ele_dict = {'user_xpath':'//*[@id="id_account_l"]',\
'pwd_xpath':'//*[@id="id_password_l"]','login_xpath':'//*[@id="login_btn"]'}
account_dict = {'uname':account,'pwd':pwd} ele_tuple = findElement(driver,ele_dict) #接收字典的值 sendVals(ele_tuple,account_dict)
checkResult(driver,'该账号不正确')
driver.find_element_by_link_text('退出').click() if __name__ == '__main__':
login_test()
Selenium(八)测试用例的设计与模块化的更多相关文章
- 《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)
1.简介 从这一篇开始介绍和分享Java+Selenium+POM的简单自动化测试框架设计.第一个设计点,就是支持跨浏览器测试. 宏哥自己认为的支持跨浏览器测试就是:同一个测试用例,支持用不同浏览器去 ...
- 实践作业3:白盒测试----开始测试用例的设计DAY3
白盒测试与黑盒测试很大不同之处在于白盒测试必须读相应代码,对代码有一定了解的情况下针对代码的逻辑进行测试用例的设计.白盒测试有六种覆盖标准:语句覆盖.判定覆盖.条件覆盖.判定/条件覆盖.条件组合覆盖和 ...
- 我是如何一步步编码完成万仓网ERP系统的(八)产品库设计 4.品牌类别
https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...
- selenium自动化测试原理和设计的分享
昨天参加了公司的一个自动化测试的分享,有一些收获,记录一下. 1.主流的web端的UI自动化测试工具 基于浏览器API: selenium2.0,Watir(IE Driver) 基于JS 进行驱动: ...
- Nextday 参数化单元测试(测试用例)设计
一.首先简单描述一下下载试题及配置试题的过程 配置环境:安装Eclipse.JDK(1.7).及考试插件 (net.mooctest....*.jar)等: 登录系统:运行Eclipse: [Mooc ...
- selenium自动化测试用例需要关注的几点(二)
注:原文地址 UI映射 一个UI映射是一种机制,它存储所有的定位器的测试套件在一个地方,方便修改UI元素的路径标识符或改变在AUT.测试脚本,然后使用UI地图定位以被测试的元件.基本上,UI地图是一个 ...
- 【转】selenium自动化测试用例需要关注的几点(一)
自动化测试设计简介 注:参看文章地址 我们在本章提供的信息,对自动化测试领域的新人和经验丰富的老手都是有用的.本篇中描述最常见的自动化测试类型, 还描述了可以增强您的自动化测试套件可维护性和扩展性的 ...
- 《the art of software testing》第四章 测试用例的设计
白盒测试 逻辑覆盖测试: 逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术.它属白盒测试.白盒测试的测试方法有代码检查法.静态结构分析法.静态质量度量法.逻辑覆盖法.基本路径测试法.域测试.符 ...
- selenium第三课(selenium八种定位页面元素方法)
selenium webdriver进行元素定位时,通过seleniumAPI官方介绍,获取页面元素的方式一共有以下八种方式,现按照常用→不常用的顺序分别介绍一下. 官方api地址:https://s ...
随机推荐
- TCP 客户端编程
1.Qt中TCP客户端编程 对Qt编程而言,网络只是数据传输的通道: Qt提供了QTcpSocket类(封装了TCP协议细节): 将QTcpSocket的对象当做黑盒使用,进行数据首发. 1.1QTc ...
- linux shell中的EOF
关键词:EOF 在平时的运维工作中,我们经常会碰到这样一个场景:执行脚本的时候,需要往一个文件里自动输入N行内容.如果是少数的几行内容,还可以用echo追加方式,但如果是很多行,那么单纯用echo追加 ...
- K8S从入门到放弃系列-(6)kubernetes集群之kube-controller-manager部署
摘要: 1.Kubernetes控制器管理器是一个守护进程它通过apiserver监视集群的共享状态,并进行更改以尝试将当前状态移向所需状态. 2.kube-controller-manager是有状 ...
- windows 下安装ElasticSearch方法
1.https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html 在此页面下载安装JDK1 ...
- 路由 router-view
路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about 按钮,页面中就要显示about 的内容.Home按钮 => home 内容, ...
- Netty自定义数据包协议
粘包和分包出现的原因是:没有一个稳定数据结构 解决办法: 分割符 长度 + 数据 * <pre> * 数据包格式 * +——----——+——-----——+——----——+——---- ...
- 自定义 Win10 系统鼠标右键发送到的选项
系统默认的右键「发送到」菜单只有几个特定的项目,如果要想发送到其他目标,可通过在资源管理器地址栏中访问 C:\Users\用户名\AppData\Roaming\Microsoft\Windows\S ...
- 数据分析之--Mataplotlib入门
目录 Mataplotlib Seaborn 绘制线性图 图片的标题 点和线的样式 X和Y轴可读的映射 直方图 柱状图 条件性柱状图 饼图 箱图 散步图 3D图 Excel数据导入数据库 Matapl ...
- Oracle查询部门工资最高员工的两种方法 1、MAX()函数 2、RANK()函数
本文以SCOTT用户下初始的EMP表为参考.代码可直接使用. 查询EMP表结构的语句如下,[代码1]: DESC EMP; EMP表结构如下:[结果1]: SQL> DESC EMP ...
- springboot 集成fastDfs
pom.xml 引入依赖 <dependency> <groupId>com.github.tobato</groupId> <artifactId>f ...