用python實現selenium 自動化測試

名字不好選發表於2020-11-09

web自動化測試方案

概要

  • 對於web端自動化測試方案中目前使用範圍比較廣的有:puppeteer,pyppeteer,selenium。puppeteer是谷歌開發的瀏覽器測試框架,使用NodeJs開發;pyppeteer是基於puppeteer開發的python版本,但是這個版本的Bug修改以及更新比較慢。selenium是目前使用比較廣相對於比較穩定的web測試框架。
  • 對於我們目前的web測試來說,pyppeteer和selenium都是足夠用的,但是目前還是比較傾向於selenium。主要是selenium還是使用範圍稍微廣點,網上資料多謝。

使用(selenium, Google瀏覽器測試)

python指令碼程式碼

  • 由於網頁的渲染相對於程式執行來說還是比較慢的,連續點選或者需要等待頁面更新的還是需要增加一定的延時(測試過程中500毫秒的延時基本上可以解決)。
  • 參考文件

https://blog.csdn.net/weixin_44318830/article/details/103339273

  • 下載驅動

開啟瀏覽器,在位址列輸入chrome://version/便可以檢視到谷歌當前的版本號
http://chromedriver.storage.googleapis.com/index.html
下載和自己版本最近的版本

  • 安裝驅動

將chromedriver.exe放到python的可執行目錄下

  • 啟動
import time
import sys
from selenium import webdriver
# 這個包可以模擬鍵盤上所有的按鍵
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options

# 配置預設模式
options = Options()
# 設定chrome瀏覽器無介面模式 
# 無介面模式也可以截圖
options.add_argument('--headless')
# 禁用gpu優化
options.add_argument('--disable-gpu')
drive = webdriver.Chrome(options=options)

# 設定最大化
# (1)
drive.maximize_window()
# (2)
width  = drive.execute_script('return document.body.parentNode.scrollWidth')
height = drive.execute_script('return document.body.parentNode.scrollHeight')
drive.set_window_size(width, height)

# 等待頁面啟動瀏覽器
driver.implicitly_wait(10)  # seconds

try:
    # 訪問服務
    driver.get("http://localhost:8080/#/")

    # 開始測試
    # 說明: 
    # 我主要使用的是 driver.find_element_by_css_selector("")函式來查詢相關的標籤
    # (1) 輸入框
    element = driver.find_element_by_css_selector(".a378 .el-input__inner")  #通過選擇器查詢相關的類 巢狀類使用 (空格隔開)
    element.clear() #清除輸入框原有的資料(有些輸入框可能有預設資料)
    element.send_keys("value") #給輸入框設定資料
    # (2) 按鈕(需要點選)
    driver.find_element_by_css_selector(".ab7b").click()  #通過選擇器查詢相關的類 巢狀類使用 (空格隔開)
    # (3) 下拉選單(連續執行下拉選單需要增加延時)
    #通過選擇器查詢相關的類 巢狀類使用 (空格隔開) 展開下拉選單
    driver.find_element_by_css_selector(".abab").click() 
    #列舉下拉選單項
    element_list = driver.find_element_by_css_selector("div[x-placement] .el-select-dropdown__item span")
    # (4) 時間選擇器
    driver.find_element_by_css_selector(".aee1").click() 
    # 增加延時 需要時間顯示日曆頁面
    time.sleep(0.5)
    # 點選上一個月的按鈕
    driver.find_element_by_css_selector("div[x-placement] .is-left .el-icon-arrow-left").click()
    # 點選上一年的按鈕
    driver.find_element_by_css_selector("div[x-placement] .is-left .el-icon-d-arrow-left").click()
    # 點選下一個月的按鈕
    driver.find_element_by_css_selector("div[x-placement] .is-right .el-icon-arrow-right").cliek()
    # 點選下一年的按鈕
    driver.find_element_by_css_selector("div[x-placement] .is-right .el-icon-d-arrow-right").click()
    time.sleep(0.1)
    # 選擇1號(第一個 available)
    # 開始日期
    driver.find_element_by_css_selector("div[x-placement] .is-left .available span").click()
    # 結束日期
    driver.find_element_by_css_selector("div[x-placement] .is-right .available span").click()
    # 截圖
    driver.save_screenshot('./login_pre.png')

finally:
    # 關閉瀏覽器
    driver.close()

視訊錄製

  • 通過selenium IDE進行指令碼錄製
  • 參考文件

https://zhuanlan.zhihu.com/p/137206279

  • 安裝selenium

Google網上應用商店 查詢selenium ide
在這裡插入圖片描述

  • 啟動selenium ide
    在這裡插入圖片描述
  • 進入selenium ide

點選 “Record a new test in a new project”
在這裡插入圖片描述

  • 新增專案名
    在這裡插入圖片描述

點選OK

  • 新增需要錄製的網址,開始錄製
    在這裡插入圖片描述

點選START RECORDING

  • 停止錄製
    在這裡插入圖片描述

相關文章