失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > selinum自动化测试代码编写框架

selinum自动化测试代码编写框架

时间:2020-09-25 06:18:15

相关推荐

selinum自动化测试代码编写框架

完成一个网页的自动化测试代码编写的步骤总结

一、引入头文件:

from selenium import webdriver#用于查找网页元素from mon.by import By#设置等待时间的方式1from selenium.webdriver.support.ui import WebDriverWait#用于处理异常from selenium.webdriver.support import expected_conditions as EC#设置等待时间的方式2import time#用于操作键盘输入from mon.keys import Keys

二、打开浏览器

driver=webdriver.Chrome()url="https//"

三、打开网页

def openWeb(driver,url):driver.get(url)#driver获取网页地址driver.implicitly_wait(20)#设置隐式等待时间为20秒driver.maximize_window()#浏览器窗口最大化if "weibo" in driver.current_url: #如果打开的网址中包含“weibo”字符串assert 1else:assert 0,"当前打开的页面并非要求打开的界面"

四、常用的文本框输入、按钮点击、元素查找、处理表格的通用函数

1、文本框输入函数:

def input_text(self,loc,value):try:exitt=WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(loc)) #等待要输入的文本框元素加载出来 if exitt:inputPlace=self.driver.find_element(*loc)#找到文本框元素inputPlace.clear()#清空文本框inputPlace.send_keys(value)#文本框输入value值else:assert 0,"文本框元素不存在"except:assert 0,"文本输入失败"

2、按钮点击函数:

def Btn_click(self,loc):try:exitt=WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(loc)) if exitt:self.driver.find_element(*loc).click()#找到按钮元素并点击else:assert 0,"按钮元素不存在"except:assert 0,"按钮点击失败"

3、查找元素并返回元素:

def findElement(self,loc):exitt=WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(loc))#检查并等待元素加载出来if exitt:return self.driver.find_element(*loc)#返回找到的元素else:assert 0,"元素不存在"

4、处理表格:

(1)处理表头:去除关键字所在的列号,若无,则返回100+列数

def tableHeadGetNum(self,keyword,loc):tableHead=self.findElement(loc)#找到表头元素ths=tableHead.find_elements_by_tag_name('th')#获取表头中的列们i=0for th in ths: #遍历列们i+=1k1=th.find_element_by_xpath('.//div') #获取当前列中存放列名的元素(原因见图1)k=self.driver.execute_script('return arguments[0].textContent',k1) #用javascript语句获取列名if k==keyword: #如果列名与关键词相同return i #返回列数else:continue#否则继续遍历i=len(ths)+100 #到这则说明没有找到关键词的列,给总列数+100(即是一个不可能存在的列数)return i #返回不可能存在的列数,用于后续判断是否找到需要的列

(2)处理表格中的内容:传入要点击的按钮的编号、搜索的关键字、列名1、列名2;没有符合条件的列则返回2,没有要求的行则返回3,有结果则返回属于同一关键字的所有指定按钮:

例子:此时函数参数:列名1=“参赛队名称”,列名2=“操作”,关键字=“测试”,按钮编号=2

用于找到表格中所有参赛队名称为“测试”的行,这些行的操作中的第二个按钮,即“重置密码按钮”。最终目的是找到所有“测试”队的重置密码按钮。

def tableBodyOperate(self,buttonNum,keyword,keyword1,keyword2,loc1,loc2):nameColNum=-1operateColNum=-1if keyword1!="null": #如果列名1不为空nameColNum=self.tableHeadGetNum(keyword1,loc1) #传入列名1和table head,获取列名1所在的列数,暂称为列1if keyword2!="null": #如果列名2不为空operateColNum=self.tableHeadGetNum(keyword2,loc1) #传入列名2和table head获取列名2所在的列数,暂称为列2buttons=[]if nameColNum>100 or operateColNum>100: #出现这种情况就是列名1、列名2至少其中一个列不存在return 2else: #两个列都存在table=self.findElement(loc2) #获取tablebodytrs=table.find_elements_by_tag_name('tr') #获取表格中的所有行if len(trs)<=0: #如果行数为0,即表格没有内容return 3else:for tr in trs: #如果获取到了表格中的行们k1=tr.find_element_by_xpath('.//td['+str(nameColNum)+']//div') #获取(当前行,列1)这一格中存放内容的元素k=self.driver.execute_script('return arguments[0].textContent',k1) #用执行javascript的方式获取元素内容if k!=keyword and k!= 'null': #如果元素内容不是要找的关键字,并且元素内容不为空(为什么要判断不为空?虽然是自己写的代码,但是忘了。。。)continue #继续查找下一行else: #到此处即找到了列名1中元素=关键词的行 button=tr.find_element_by_xpath('.//td['+str(operateColNum)+']//button['+str(buttonNum)+']') #获取所在行的列2中的第buttonNum个按钮buttons.append(button) #将这个按钮存起来continue #继续遍历return buttons #到此处,就找到了所有列1=关键字的行中的指定按钮

(3)、获取表格中某一列中的所有元素,即下图中的红框内的内容

输入列名,table head元素,table body元素

def tableText(self,colname1,loc1,loc2):colnum=self.tableHeadGetNum(colname1, loc1) #根据列名和表头元素得到列名对应的列数texts=[]if colnum>100: #此即说明当前表格中不存在该列return 2else: #此即说明找到了列table=self.findElement(loc2) #获取table body元素trs=table.find_elements_by_tag_name('tr') #获取表格中所有的行们if len(trs)<=0: #如果没有行return 3else:for tr in trs: #遍历行们k1=tr.find_element_by_xpath('.//td['+str(colnum)+']//div') #获取(当前行,colnum)这一格中的元素k=self.driver.execute_script('return arguments[0].textContent',k1) #获取当前格元素中的文本内容texts.append(k) #存起来return texts #返回所有指定列的内容

五、用XPATH查找元素(用手写XPATH的方法查找,而非浏览器直接右键复制,会更具灵活性)

手写xpath的方法:/weixin_44078196/article/details/102809973

使用POM模式编写代码,创建页面的元素集,将元素和对元素操作的逻辑分开,这样在元素发生变化的时候不用在逻辑函数里面一个个修改发生了变更的元素,只需修改元素集中的元素即可。

例子:

#元素集:Input1=(By.XPATH,'xpaht1')Input2=(By.XPATH,'xpath2')Btn1=(By.XPATH,'xpath3')Btn2=(By.XPATH,'xpath4')#对元素的操作:(使用了第四点的通用函数)input_text(driver,Input1)Btn_click(driver,Btn1)input_text(driver,Input2)Btn_click(driver,Btn2)

如果觉得《selinum自动化测试代码编写框架》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。