1. 程式人生 > >Selenium2+python自動化48-登錄方法(參數化)【轉載】

Selenium2+python自動化48-登錄方法(參數化)【轉載】

fire 方法 itl 例如 參數 判斷 driver 元素 是否

本篇轉自博客:上海-悠悠

原文地址: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-登錄方法(參數化)【轉載】