python 测试自动化学习基础

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##
     无论 tryexcept 报错不报错  都会走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定位的位置是否被点击 返回值为布尔值

如果对你有帮助就点个赞叭~ 哪里有错误多多希望可以评论告诉我 谢谢

猜你喜欢

转载自blog.csdn.net/weixin_48367535/article/details/108098805