文章目錄
- 前言
- python程式目錄
- 賬號密碼登錄模塊
- 測驗用例執行模塊
- 運行結果示例
前言
僅僅是針對CSDN賬號密碼登錄這一小塊的自動化測驗;測驗用例考慮的不是非常周全,僅圖一樂
因為用例比較少,所以沒有用自己封裝的seleniumAPI,這樣看著比較方便一些
python程式目錄
HTMLTestRunner需要下載,不能用pip安裝,參見博客

賬號密碼登錄模塊
CSDN登錄-賬號密碼登錄的功能
#!/usr/bin/python3
# _*_coding=utf-8 _*_
# @author junwei
# @date 2021/2/28 21:21
# description 測驗CSDN的賬號密碼登錄模塊
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
# 登錄模塊
class Login(object):
# 創建瀏覽器物件
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(2)
self.driver.maximize_window()
def login_csdn(self, userName, pwd):
# 進入使用賬號密碼登錄的頁面
url = "https://passport.csdn.net/login?code=public"
self.driver.get(url)
self.driver.implicitly_wait(2)
self.driver.find_element_by_css_selector(
"#app > div > div > div.main > div.main-login > div.main-select > ul > li:nth-child(2) > a").click()
# 輸入用戶名
self.driver.find_element_by_id("all").send_keys(userName)
# 輸入密碼
self.driver.implicitly_wait(2)
self.driver.find_element_by_id("password-number").send_keys(pwd)
if self.is_button_enable() is True:
self.driver.find_element_by_css_selector(
"#app > div > div > div.main > div.main-login > div.main-process-login > div > div:nth-child(6) > div > button").click()
else:
return "warning:login button disabled"
# 判斷登錄按鈕是否可有效
def is_button_enable(self):
is_enable = self.driver.find_element_by_css_selector(
"#app > div > div > div.main > div.main-login > div.main-process-login > div > div:nth-child(6) > div > button").is_enabled()
return is_enable
# 判斷是否登錄成功
def is_login(self):
ActionChains(self.driver).move_to_element(self.driver.find_element_by_css_selector(
"#csdn-toolbar > div > div > div.toolbar-container-right > div > div.toolbar-btn.toolbar-btn-login.csdn-toolbar-fl.toolbar-subMenu-box > a > img")).perform()
self.driver.implicitly_wait(2)
nick_name = self.driver.find_element_by_class_name("csdn-profile-nickName")
if nick_name is not None:
return True
else:
return False
# 獲取提示資訊
def get_msg(self):
# self.driver.implicitly_wait(2)
time.sleep(2) # 需要強制等待
return self.driver.find_element_by_id("js_err_dom").text # 1.用戶名或密碼錯誤 2.長時間未修改密碼,請通過"忘記密碼"修改密碼后登錄 3.用戶唯一標識不能為空
def __del__(self):
time.sleep(2)
self.driver.close()
if __name__ == '__main__':
login = Login()
login.login_csdn("", "s")
print(login.is_button_enable())
print(login.get_msg())
# print(login.is_login())
測驗用例執行模塊
6條測驗用例&運行unittest
#!/usr/bin/python3
# _*_coding=utf-8 _*_
# @author junwei
# @date 2021/2/28 21:22
# description 測驗用例
import unittest
from unittest_selenium.CSDNFunction.login import Login
from unittest_selenium.HTMLTestRunner import HTMLTestRunner
class MyTestCase(unittest.TestCase):
def setUp(self) -> None:
print("當前用例執行開始")
def tearDown(self) -> None:
print("當前用例執行結束")
# 測驗用例001:賬號密碼正確,登錄成功
def test_001(self):
login = Login()
login.login_csdn("correctName", "correctPwd")
is_login = login.is_login()
self.assertEqual(True, is_login)
# 測驗用例002:不輸入用戶名和密碼
def test_002(self):
login = Login()
login.login_csdn("", "")
is_button_enable = login.is_button_enable()
self.assertEqual(False, is_button_enable)
# 測驗用例003:輸入用戶名,密碼為空,登錄按鈕無法點擊
def test_003(self):
login = Login()
login.login_csdn("testUser", "")
is_button_enable = login.is_button_enable()
self.assertEqual(False, is_button_enable)
# 測驗用例004:輸入密碼,用戶名為空,點擊登錄
def test_004(self):
login = Login()
login.login_csdn("", "testPwd")
msg = login.get_msg()
self.assertEqual("用戶唯一標識不能為空", msg)
# 測驗用例005:輸入正確的用戶名和錯誤的密碼,點擊登錄
def test_005(self):
login = Login()
login.login_csdn("correctName", "testPwd")
msg = login.get_msg()
self.assertEqual("用戶名或密碼錯誤", msg)
# 測驗用例006:假設已知賬號A長時間未登錄,輸入賬號名A及密碼
def test_006(self):
login = Login()
login.login_csdn("1", "testPwd")
msg = login.get_msg()
self.assertEqual('長時間未修改密碼,請通過"忘記密碼"修改密碼后登錄', msg)
if __name__ == '__main__':
# unittest.main()
# # 測驗用例串列
# case_list = ['test_001', 'test_002', 'test_003', 'test_004', 'test_005', 'test_006']
# # 創建測驗套件
# suit = unittest.TestSuite()
# # 將測驗用例添加到測驗套件中
# for case in case_list:
# suit.addTest(MyTestCase(case))
# 添加全部測驗用例
suit = unittest.makeSuite(MyTestCase)
# 執行測驗,verbosity=2指定為每個測驗用例生成報告,run中傳入要執行的測驗套件
unittest.TextTestRunner(verbosity=2).run(suit)
# # 使用HTMLTestRunner生成HTML格式的測驗報告
# with open('report.html', 'wb') as f:
# HTMLTestRunner(stream=f, title="測驗報告標題", description="測驗報告描述資訊", verbosity=2).run(suit)
運行結果示例
第一條用例失敗是因為沒有給正確的賬號密碼

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/265398.html
標籤:python
上一篇:Python實戰專案 --> 飛機大戰(學習程序·上)
下一篇:python入門
