selenium-自动化用例(十一)

时间:2023-03-08 18:49:07
selenium-自动化用例(十一)

思路

将页面操作与用例case分别封装,编写case时就可以用同一个操作方法对应多个case

如下图:

selenium-自动化用例(十一)

PageGUI:存放页面操作方法,每个页面写一个文件,每个文件中写同一个页面不同的操作,例如检索、排序等

case:存放自动化用例,主要是引用PageGUI中封装的方法,传入不同的参数达到对应不同case的目的

以 博客园 后台登陆画面为例:

selenium-自动化用例(十一)

loginGUI.py

 # coding = utf-8
from selenium import webdriver class loginGUI:
def login(self,driver,username,password,autoLogin_checkbox=None): # GUI中定位所需元素
dr = self.get_driver(driver)
username_element = dr.find_element_by_id('input1')
password_element = dr.find_element_by_id('input2')
autoLogin_checkbox_element = dr.find_element_by_id('remember_me')
login_btn = dr.find_element_by_id('signin') # 执行步骤
username_element.send_keys(username)
password_element.send_keys(password)
self.checkBox_operation(autoLogin_checkbox_element,autoLogin_checkbox)
login_btn.click() # 判断 下次自动登录 传的值是否正确
def checkBox_operation(self,autoLogin_checkbox_element,autoLogin_checkbox):
if autoLogin_checkbox == True:
if autoLogin_checkbox_element.is_selected() == False: # 判断是否被选中
return autoLogin_checkbox_element.click() elif autoLogin_checkbox == False or autoLogin_checkbox == None:
if autoLogin_checkbox_element.is_selected() == True: # 判断是否被选中
return autoLogin_checkbox_element.click()
else:
return None def get_driver(self,driver):
url= 'https://passport.cnblogs.com/user/signin' if driver == 'chrome':
driver = webdriver.Chrome()
elif driver == 'edge':
driver = webdriver.Edge()
else:
driver = webdriver.Safari() driver.get(url)
driver.implicitly_wait(10)
return driver

Testlogin.py

 from PageGUI import loginGUI
import unittest
import time class TestCase(unittest.TestCase):
def test_login(self):
login = loginGUI()
login.login(driver='chrome',username='',password='',autoLogin_checkbox=1)
time.sleep(3) def test_login_usernameError(self):
pass def test_login_passwordError(self):
pass if __name__ == '__main__':
unittest.main()

以上只是对case的对应

更多的可以将 driver 、测试数据进行整理存放

原文发布在 软件羊皮卷 微信公众号中,欢迎大家关注

selenium-自动化用例(十一)