python自动化测试
unittest框架
from selenium import webdriver#测试自动化的类 里面包含了驱动器方法
import unittest#使用unittest需要使用的包
import datetime#获取当前时间需要使用的包
import time#获取当前时间需要使用的包
from random import randint#随机数需要使用的包
from time import sleep#使用强制等待需要使用的包
import HTMLTestRunner#打印报告需要使用的包
class *** (unittest.TestCase)
def setUp(self):
##
前置函数
前置函数会在用例前执行
##
def tearDown(self):
##
后置函数
后置函数会在用例执行完毕后执行
##
def test_***(self):
##
用例
用例名称必须由test开头
且用例的运行顺序是由用例的名称排序运行
并非是写用例的顺序
##
if __name__ == '__main__':
unittest.main()
##
这里写的是单次运行用例的方法
在实际中可能需要循环用例
并且可能有要求需要打印报告
下面的方法是可打印报告并且可循环的例子
使用时将**unittest.main()**替换如下即可
>: match = input("输入循环次数:")
i = 0
while i < int(match):
suit = unittest.TestSuite()
suit.addTest(***("test_***"))#此处的***为类名及其用例名称 此处是将用例放入容器中 有多个用例则多几个容器
now = time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))#获取当前的时间并赋值给now变量 使用该方法需要import datetime import time
filePath ="*://***/" + now + ".html"#填写路径并且将给报告命名为now变量的内容 后缀名为.html
fp = open(filePath,"wb")#写入该文件并且wb是以二进制的方式写入
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='teat result',description=u'result:')
runner.run(suit)#开始跑用例
fp.close()#关闭文件
i += 1
##
较常见的方法
driver = webdriver.Chrome()#获取谷歌的驱动
driver.implicitly_wait(*)#隐性等待 如果在*秒前加载完毕则直接进行下一步 最大等待*秒
sleep(*)#强制等待*秒
WebDriverWait(driver,*).until(lambda driver : driver.find_element_by_xpath("***").text)#每*秒检测一次 xpath地址 所定位的地方 直到可以扫到文本信息
driver.get(“***”)#打开***网站
driver.maximize_window()#网页最大化
driver.quit()#关闭所有网页
driver.find_element_by_id("***").send_keys("***")#在id定位的地方输入***
driver.find_element_by_xpath("***").click()#点击Xpath定位的地方
driver.find_element_by_link_text("***").click()#点击文本名为***的地方
driver.find_element_by_xpath("***").text#获取Xpath定位的文本信息
driver.find_element_by_xpath("***").clear()#清除Xpath定位的信息
randint(1,***)#随机取1-***里的一个数字
实践遇见的问题及其解决方法
如果需要循环遍历时,可以在Xpath定位中添加变量
driver.find_element_by_xpath('/***[' + str(n) +']/***]')#注意两边的单引号
如果遇到网页的不确定性 例如有时候有弹框有时候没有弹框 可以使用python 中的try except finally
try:
##
会优先执行try省里的代码
当try报错时才会选择走except省内的代码
##
except:
##
当try报错时 开始走except省内的代码
##
finally:
##
无论 try 和 except 报错不报错 都会走finally省内的代码
##
点击需要按钮出现在屏幕上时才可以点击 要不然会抛出找不到该元素的错误 所以有些时候需要拖动滑动条
driver.execute_script("window.scrollTo(0,***);")#将滑动条从0拖动到***的位置 ***多少需要自己估量一下
driver.execute_script("arguments[0].scrollIntoView();", ***)#当滑动条为内嵌的滑动条时 使用该方法可以直接定位到该元素上 ***为该元素的定位
当存在iframe标签时 需要进入标签才可以进行定位 否者定位的地方会是为空
driver.swtich_to.frame(***)#进入该标签 ***为该标签的地址
driver.swtich_to.default_content()#退出该标签
有些时候需要对按钮的状态进行判断 例如 按钮是否被点击 该输入框能否输入
driver.find_element_by_xpath("***").is_enabled()#判断Xpath定位的位置是否可以输入 返回值为布尔值
driver.find_element_by_xpath("***").is_selected()#判断Xpath定位的位置是否被点击 返回值为布尔值
如果对你有帮助就点个赞叭~ 哪里有错误多多希望可以评论告诉我 谢谢