Selenium2+python自動化48-登錄方法(參數化)【轉載】
本篇轉自博客:上海-悠悠
原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/
前言
登錄這個場景在寫用例的時候經常會有,我們可以把登錄封裝成一個方法,然後把賬號和密碼參數化,這樣以後用的登錄的時候,只需調用這個方法就行了
一、登錄方法
1.把輸入賬號、輸入密碼、點擊登錄按鈕三個步驟寫成一個方法
2.然後把輸入的賬號和密碼參數化
二、用例
1.下面的用例可以調用前面寫的登錄方法,這樣不用每次都去走登錄流程
2.判斷是否登錄成功,我這裏是取的登錄成功後的賬戶名
三、判斷方法封裝
1.如果用上面的方法去判斷的話,有個缺陷,當登錄不成功的時候,頁面是不會跳轉的,所以查找元素會報異常:
NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"lnk_current_user"}
2.這個時候就簡單封裝下判斷方法:獲取到賬戶名返回Ture;沒有獲取到返回False
四、優化後案例
1.優化後的登錄案例如下,這樣看起來更清楚了
五、參考代碼
# coding:utf-8
from selenium import webdriver
import unittest
import time
class Bolg(unittest.TestCase):
u‘‘‘登錄博客‘‘‘
def setUp(self):
self.driver = webdriver.Firefox()
url = "https://passport.cnblogs.com/user/signin"
self.driver.get(url)
self.driver.implicitly_wait(30)
def login(self, username, psw):
u‘‘‘這裏寫了一個登錄的方法,賬號和密碼參數化‘‘‘
self.driver.find_element_by_id("input1").send_keys(username)
self.driver.find_element_by_id("input2").send_keys(psw)
self.driver.find_element_by_id("signin").click()
time.sleep(3)
def is_login_sucess(self):
u‘‘‘判斷是否獲取到登錄賬戶名稱‘‘‘
try:
text = self.driver.find_element_by_id("lnk_current_user").text
print text
return True
except:
return False
def test_01(self):
u‘‘‘登錄案例參考:賬號,密碼自己設置‘‘‘
self.login(u"上海-悠悠", u"xxxx") # 調用登錄方法
# 判斷結果
result = self.is_login_sucess()
self.assertTrue(result)
def test_02(self):
u‘‘‘登錄案例參考:賬號,密碼自己設置‘‘‘
self.login(u"上海-悠悠", u"xxxx") # 調用登錄方法
# 判斷結果 # 交流QQ群:232607095
result = self.is_login_sucess()
self.assertTrue(result)
# def test_01(self):
# u‘‘‘登錄案例參考:賬號,密碼自己設置‘‘‘
# self.login(u"上海-悠悠", u"xxxx") # 調用登錄方法
# # 獲取登錄後的賬號名稱
# text = self.driver.find_element_by_id("lnk_current_user").text
# print text
# # 斷言實際結果與期望結果一致
# self.assertEqual(text, u"上海-悠悠")
#
# def test_02(self):
# u‘‘‘登錄案例參考:賬號,密碼自己設置‘‘‘
# self.login(u"上海-悠悠", u"oooo") # 調用登錄方法
# # 獲取登錄後的賬號名稱
# text = self.driver.find_element_by_id("lnk_current_user").text
# print text # 交流QQ群:232607095
# # 斷言實際結果與期望結果一致
# self.assertEqual(text, u"上海-悠悠")
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()
Selenium2+python自動化48-登錄方法(參數化)【轉載】