selenium-自動化用例(十一)

Tynam.Yang發表於2019-02-13

思路

將頁面操作與用例case分別封裝,編寫case時就可以用同一個操作方法對應多個case

如下圖:

PageGUI:存放頁面操作方法,每個頁面寫一個檔案,每個檔案中寫同一個頁面不同的操作,例如檢索、排序等

case:存放自動化用例,主要是引用PageGUI中封裝的方法,傳入不同的引數達到對應不同case的目的

 

以 部落格園 後臺登陸畫面為例:

 

 

loginGUI.py

 1 # coding = utf-8
 2 from selenium import webdriver
 3 
 4 
 5 class loginGUI:
 6     def login(self,driver,username,password,autoLogin_checkbox=None):
 7 
 8         # GUI中定位所需元素
 9         dr = self.get_driver(driver)
10         username_element = dr.find_element_by_id('input1')
11         password_element = dr.find_element_by_id('input2')
12         autoLogin_checkbox_element = dr.find_element_by_id('remember_me')
13         login_btn = dr.find_element_by_id('signin')
14 
15         # 執行步驟
16         username_element.send_keys(username)
17         password_element.send_keys(password)
18         self.checkBox_operation(autoLogin_checkbox_element,autoLogin_checkbox)
19         login_btn.click()
20 
21     # 判斷 下次自動登入 傳的值是否正確
22     def checkBox_operation(self,autoLogin_checkbox_element,autoLogin_checkbox):
23         if autoLogin_checkbox == True:
24             if autoLogin_checkbox_element.is_selected() == False:  # 判斷是否被選中
25                 return autoLogin_checkbox_element.click()
26 
27         elif autoLogin_checkbox == False or autoLogin_checkbox == None:
28             if autoLogin_checkbox_element.is_selected() == True:  # 判斷是否被選中
29                 return autoLogin_checkbox_element.click()
30         else:
31             return None
32 
33     def get_driver(self,driver):
34         url= 'https://passport.cnblogs.com/user/signin'
35 
36         if driver == 'chrome':
37             driver = webdriver.Chrome()
38         elif driver == 'edge':
39             driver = webdriver.Edge()
40         else:
41             driver = webdriver.Safari()
42 
43         driver.get(url)
44         driver.implicitly_wait(10)
45         return driver

 

Testlogin.py

 1 from PageGUI import loginGUI
 2 import unittest
 3 import time
 4 
 5 
 6 class TestCase(unittest.TestCase):
 7     def test_login(self):
 8         login = loginGUI()
 9         login.login(driver='chrome',username='123',password='345',autoLogin_checkbox=1)
10         time.sleep(3)
11 
12     def test_login_usernameError(self):
13         pass
14 
15     def test_login_passwordError(self):
16         pass
17 
18 
19 if __name__ == '__main__':
20     unittest.main()

 

以上只是對case的對應

更多的可以將 driver 、測試資料進行整理存放

 

原文釋出在 軟體羊皮卷 微信公眾號中,歡迎大家關注

 

相關文章