一、selenium使用unittest架構如下:

case下放置要執行的檔案,檔案名要以test開頭
config可以添加一個py檔案,檔案内放置基本ip,如:
HOST=www.baidu.com
二、run.py代碼如下:
from BeautifulReport import BeautifulReport
import unittest
import time
current = time.strftime('%Y-%m-%d-%H-%M-%S') # 生成時間,月份一定要小寫,分鐘一定要大寫
report_name = current + '-report.html' # 生成測試報告檔案名,參考上面架構中的report下的html報告名
test_suite = unittest.defaultTestLoader.discover('./case', pattern='test*py') # 執行case檔案夾内所有以test開頭的py檔案,要執行的檔案名命名一定要以test開頭
runner = BeautifulReport(test_suite)
runner.report('selenium自動化測試', report_name, './report') # 生成的報告名
if __name__ == "__main__": # run.py執行入口,在run.py執行就可以執行case下所有的檔案
unittest.main()
三、get_token.py檔案寫擷取token的代碼,并封裝
from selenium import webdriver # 導入webdriver
from PIL import Image # 導入截圖插件
import time
def get_driver(): # 封裝打開chrome浏覽器
driver = webdriver.Chrome()
return driver
def get_token(ob): # 封裝get_token,通過賬号密碼驗證碼方式登入
driver = ob
driver.get('登入界面的url')
driver.maximize_window()
driver.find_element_by_xpath('賬号輸入框的xpath').send_keys('你的賬号') # 點選賬号輸入框并輸入賬号
driver.find_element_by_xpath('密碼輸入框的xpath').send_keys('你的密碼') # 點選密碼輸入框并輸入密碼
driver.save_screenshot('a.png') # 登入界面截圖
element = driver.find_element_by_xpath('驗證碼xpath') # 找到驗證碼的xpath定位
left = element.location['x'] # 驗證碼圖檔左邊的坐标
top = element.location['y'] # 驗證碼圖檔上面的坐标
right = left + element.size['width'] # 驗證碼圖檔右邊的坐标
bottorm = top + element.size['height'] # 驗證碼圖檔底部的坐标
im = Image.open('a.png') # 打開之前截圖的登入界面圖檔
im = im.crop((left, top, right, bottorm)) # 在登入界面圖檔根據驗證碼上下左右坐标定位到驗證碼圖檔
im.save('b.png') # 将驗證碼圖檔截圖
code = input('請輸入正确的驗證碼:')
driver.find_element_by_xpath('驗證碼輸入框xpath').send_keys(code) # 點選輸入框并輸入驗證碼
driver.find_element_by_xpath('登入按鈕xpath').click() # 點選登入按鈕,即可登入
time.sleep(5)
'''擷取token'''
token = driver.execute_script('return localStorage.getItem("token");') # 擷取token
header = {"X-Access-Token": token}
return header
if __name__ == "__main__":
print(get_token())
四、case裡的py執行用例檔案如何編寫
import unittest # 導入unittest
from time import sleep
from config.config import HOST # 導入config檔案中的HOST
from tools.get_token import get_token
from tools.get_token import get_driver
import sys,os
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
class Partment(unittest.TestCase): #定義測試類,繼承unittest.TestCase
'''部門管理'''
# 測試之前初始化
@classmethod
def setUpClass(self):
self.driver = get_driver()
self.header = get_token(self.driver)
self.driver.get(HOST+'路徑')
self.driver.implicitly_wait(15)
# 定義測試結束後的動作
@classmethod
def tearDownClass(self):
# 關閉浏覽器,恢複測試資料等操作
sleep(2)
self.driver.quit()
def test_01_search_seccess(self):
'''第一條用例'''
pass
if __name__ == "__main__":
unittest.main()