python3之web自动化二次封装
做过web自动化或者接口自动化的同学都知道,唯一有难度的就是对元素进行定位、获取text、还有消息弹出框、验证码、toast等等,而元素定位有八种方法
我们可以对这八种方法进行一次归类。形成自己的函数。
以web为例:
from selenium import webdriver
import unittest
class MyTest(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Chrome()
def tearDown(self):
self.driver.quit()
def my_open(self,url):
self.driver.get(url)
def click(self,style,text):
self.driver.find_element(style, text).click()
def send_keys(self,style,text,key):
self.driver.find_element(style, text).send_keys(key)
前面的是打开浏览器,等操作,当用例过多的时候,而链接唯一的时候 可以加上装饰器,不用每次都打开浏览器具体方式如下:
class Test(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
cls.url = "https://mail.qq.com/"
@classmethod
def tearDownClass(cls):
cls.driver = webdriver.Chrome()
cls.driver.quit()
def login(self, username, password):
self.driver.get(self.url)
sleep(2)
self.driver.maximize_window() # 将浏览器最大化显示
sleep(1)
self.driver.find_element_by_id("switcher_plogin").click()
self.driver.find_element_by_css_selector("input[name='u']").send_keys(username)
self.driver.find_element_by_css_selector("input[name='p']").send_keys(password)
self.driver.find_element_by_id("login_button").click()
sleep(2)
def test_username_null(self):
"""
测试用户名为空
:return:
"""
self.driver.get(self.url)
self.login("","123")
sleep(2)
result=self.driver.find_element_by_id("err_m").text
self.assertEqual(result , "你还没有输入帐号!")
def test_password_null(self):
"""
测试密码为空
:return:
"""
self.driver.get(self.url)
self.login("error","")
result = self.driver.find_element_by_id("err_m").text
print (result)
这样写执行测试的时候,就会省很大时间。
具体调用的时候 :
首先要把Mytest类导入进来
# -*- coding:utf-8 -*-
from test_dir.e import *
from time import sleep
import unittest
class Test(MyTest):
def test_case1(self):
self.my_open("http://www.baidu.com")
self.send_keys(style="id",text="kw",key="selenium")
sleep(2)
self.click(style='xpath',text='//*[@id="su"]')
sleep(3)
result = self.driver.find_element_by_xpath('//*[@id="1"]/h3/a').text
self.assertEqual(result, "Selenium automates browsers. That's it!")
直接采用self来调用父类中的方法,什么send_keys 啊 还有clicl等等
大家有好的意见欢迎讨论!!!

浙公网安备 33010602011771号