Selenium(八)测试用例的设计与模块化

一.设计测试用例

1.分析我之前写的登录脚本:

1from selenium import webdriver 2import time 3from selenium.webdriver.common.action_chains import ActionChains 4from selenium.webdriver.support.ui import WebDriverWait 5 6url = 'http://www.maiziedu.com/' 7login_path = '/html/body/div[2]/div/div/div/div/a[2]' 8account = 'xxx' #这里需填实际的账号 9pwd = 'maizi123456' #预先设定好网址和账号密码 10 11def get_ele_times(driver,times,func): 12 return WebDriverWait(driver,times).until(func) #等待方法 13 14def login_test(): 15 driver = webdriver.Firefox() #open firefox 16 driver.get(url) #打开url 17 time.sleep(1) 18 driver.maximize_window() #最大化窗口 19 20 ele_login = get_ele_times(driver,10,\ 21 lambda driver:driver.find_element_by_xpath(login_path)) 22 ele_login.click() #找到登录,然后点击 23 #相当于:driver.find_element_by_link_text(login_text).click() 24 25 26 account_ele = driver.find_element_by_xpath('//*[@id="id_account_l"]') 27 account_ele.send_keys('') 28 account_ele.send_keys(account) 29 30 password_ele = driver.find_element_by_xpath('//*[@id="id_password_l"]') 31 password_ele.send_keys('') 32 password_ele.send_keys(pwd) 33 34 driver.find_element_by_xpath('//*[@id="login_btn"]').click() 35 try: 36 driver.find_element_by_link_text('该账号不正确') 37 print ("ACCOUNT AND PWD ERROR!") 38 except: 39 print ("ACCOUNT AND PWD RIGHT!") 40 41if __name__ == '__main__': 42 login_test()

2.分析脚本功能是否可以模块化

3.模块化与数据隔离

4.修改后的模型

 

二.测试用例模块化

2.模块化的代码:

1from selenium import webdriver 2import time 3from selenium.webdriver.common.action_chains import ActionChains 4from selenium.webdriver.support.ui import WebDriverWait 5 6url = 'http://www.maiziedu.com/' 7login_xpath = '/html/body/div[2]/div/div/div/div/a[2]' 8account = 'XXX' 9pwd = 'maizi123456' #预先设定好网址和账号密码 10 11def openBrower(): #配置浏览器 12 webdriver_handle = webdriver.Firefox() 13 return webdriver_handle 14 15def openUrl(handle,url): #打开url 16 handle.get(url) 17 18def get_ele_times(driver,times,func): 19 return WebDriverWait(driver,times).until(func) #等待方法 20 21def findElement(driver,arg): 22 ''' 23 arg must be dict 24 1.user_xpath:用户名 25 2.pwd_xpath:密码 26 3.login_xpath:登录按钮 27 return useEle,pwdEle,loginEle 28 ''' 29 30 useEle = driver.find_element_by_xpath(arg['user_xpath']) 31 pwdEle = driver.find_element_by_xpath(arg['pwd_xpath']) 32 loginEle = driver.find_element_by_xpath(arg['login_xpath']) 33 return useEle,pwdEle,loginEle 34 35def sendVals(eletuple,arg): 36 ''' 37 ele tuple 38 account:uname,pwd 39 ''' 40 listkey = ['uname','pwd'] 41 i = 0 42 for key in listkey: 43 eletuple[i].send_keys('') 44 eletuple[i].clear() 45 eletuple[i].send_keys(arg[key]) 46 i+=1 47 eletuple[2].click() 48def checkResult(driver,text): 49 try: 50 driver.find_element_by_link_text(test) 51 print ("ACCOUNT AND PWD ERROR!") 52 except: 53 print ("ACCOUNT AND PWD RIGHT!") 54 55def login_test(): 56 driver = openBrower() 57 openUrl(driver,url) 58 driver.maximize_window() 59 ele_login = get_ele_times(driver,10,lambda driver:driver.find_element_by_xpath(login_xpath)) 60 ele_login.click() 61 #字典 62 ele_dict = {'user_xpath':'//*[@id="id_account_l"]',\ 63 'pwd_xpath':'//*[@id="id_password_l"]','login_xpath':'//*[@id="login_btn"]'} 64 account_dict = {'uname':account,'pwd':pwd} 65 66 ele_tuple = findElement(driver,ele_dict) #接收字典的值 67 68 sendVals(ele_tuple,account_dict) 69 checkResult(driver,'该账号不正确') 70 driver.find_element_by_link_text('退出').click() 71 72if __name__ == '__main__': 73 login_test()
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )