標籤:判斷 name driver ref use pre 一個 自己 select
前言
登入這個情境在寫用例的時候經常會有,我們可以把登入封裝成一個方法,然後把帳號和密碼參數化,這樣以後用的登入的時候,只需調用這個方法就行了
一、登入方法
1.把輸入帳號、輸入密碼、點擊登入按鈕三個步驟寫成一個方法
2.然後把輸入的帳號和密碼參數化
二、用例
1.下面的用例可以調用前面寫的登入方法,這樣不用每次都去走登入流程
2.判斷是否登入成功,我這裡是取的登入成功後的賬戶名
三、判斷方法封裝
1.如果用上面的方法去判斷的話,有個缺陷,當登入不成功的時候,頁面是不會跳轉的,所以尋找元素會報異常:
NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"lnk_current_user"}
2.這個時候就簡單封裝下判斷方法:擷取到賬戶名返回Ture;沒有擷取到返回False
四、最佳化後案例
1.最佳化後的登入案例如下,這樣看起來更清楚了
五、參考代碼
1 # coding:utf-8 2 from selenium import webdriver 3 import unittest 4 import time 5 class Bolg(unittest.TestCase): 6 u‘‘‘登入部落格‘‘‘ 7 def setUp(self): 8 self.driver = webdriver.Firefox() 9 url = "https://passport.cnblogs.com/user/signin"10 self.driver.get(url)11 self.driver.implicitly_wait(30)12 13 def login(self, username, psw):14 u‘‘‘這裡寫了一個登入的方法,帳號和密碼參數化‘‘‘15 self.driver.find_element_by_id("input1").send_keys(username)16 self.driver.find_element_by_id("input2").send_keys(psw)17 self.driver.find_element_by_id("signin").click()18 time.sleep(3)19 20 def is_login_sucess(self):21 u‘‘‘判斷是否擷取到登入賬戶名稱‘‘‘22 try:23 text = self.driver.find_element_by_id("lnk_current_user").text24 print text25 return True26 except:27 return False28 29 def test_01(self):30 u‘‘‘登入案例參考:帳號,密碼自己設定‘‘‘31 self.login(u"上海-悠悠", u"xxxx") # 調用登入方法32 # 判斷結果33 result = self.is_login_sucess()34 self.assertTrue(result)35 36 def test_02(self):37 u‘‘‘登入案例參考:帳號,密碼自己設定‘‘‘38 self.login(u"上海-悠悠", u"xxxx") # 調用登入方法39 # 判斷結果 # 交流QQ群:23260709540 result = self.is_login_sucess()41 self.assertTrue(result)42 43 # def test_01(self):44 # u‘‘‘登入案例參考:帳號,密碼自己設定‘‘‘45 # self.login(u"上海-悠悠", u"xxxx") # 調用登入方法46 # # 擷取登入後的帳號名稱47 # text = self.driver.find_element_by_id("lnk_current_user").text48 # print text49 # # 斷言實際結果與期望結果一致50 # self.assertEqual(text, u"上海-悠悠")51 #52 # def test_02(self):53 # u‘‘‘登入案例參考:帳號,密碼自己設定‘‘‘54 # self.login(u"上海-悠悠", u"oooo") # 調用登入方法55 # # 擷取登入後的帳號名稱56 # text = self.driver.find_element_by_id("lnk_current_user").text57 # print text # 交流QQ群:23260709558 # # 斷言實際結果與期望結果一致59 # self.assertEqual(text, u"上海-悠悠")60 61 def tearDown(self):62 self.driver.quit()63 64 if __name__ == "__main__":65 unittest.main()
Selenium2+python自動化48-登入方法(參數化)