基於airtest-selenium的UI自動化測試

一. airtest-selenium環境搭建

1.1 安裝與介紹

airtest-selenium庫是基於selenium庫的進一步封裝:
https://airtest.doc.io.netease.com/tutorial/13_Selenium/

pip install airtest-selenium
pip install pynput

airtest-selenium庫的幾個特點:
1) 對切換標籤的界面進行了友好封裝,
2)支持圖像識別功能,
3)自動進行log記錄(參考selenium-java的監聽模式),
4)兼容selenium的原生api

1.2 下載瀏覽器和瀏覽器驅動

本文使用Chrome瀏覽器,將下載與之對應的瀏覽器驅動chromedirver.exe

1) 查看chrome版本

chrome://version/

2) 關閉Chrome瀏覽器的自動更新功能

如果瀏覽器自動更新後,瀏覽器的版本會發生變化,這樣可能會導致已下載的chromedirver.exe失效

右擊我的電腦——管理——服務和應用程序——服務——停止:google更新服務(gupdate)、google更新服務(gupdatem);啓動類型:手動

3) chromedriver與chrome版本的映射關係

ChromeDriver版本    Chrome版本
    v2.44           v69-71
    v2.42           v68-70
    v2.41           v67-69
    v2.40           v66-68
    v2.38           v65-67
    v2.37           v64-66
    v2.35           v62-64
    v2.34           v61-63
    v2.33           v60-62
    v2.32           v59-61
    v2.31           v58-60

4) 下載Chrome驅動,並將其與Chrome.exe存放到同一目錄下

Chrome.exe的默認存放路徑爲:
C:\Program Files (x86)\Google\Chrome\Application

chromedriver下載地址:
http://npm.taobao.org/mirrors/chromedriver

不同版本的chrome下載:
https://www.slimjet.com/chrome/google-chrome-old-version.php

3. 驗證環境

# -*- coding:utf-8 -*-
# Author:chinablue

import time

from airtest_selenium.proxy import WebChrome

driver = WebChrome(executable_path=r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver.maximize_window()
driver.get("http://www.baidu.com/")
time.sleep(5)
driver.quit()

4. 安裝問題記錄

如果出現如下報錯,嘗試以管理員權限重新啓動Pycharm軟件

selenium.common.exceptions.WebDriverException: Message: unknown error: Failed to create Chrome process.

二. 常用使用場景說明

2.1 Chrome瀏覽器常用參數配置

# -*- coding: utf-8 -*-
# @Time    : 2020/11/18 20:52
# @Author  : chinablue

import time

from airtest_selenium.proxy import WebChrome
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('--disable-gpu')

# 指定瀏覽器的分辨率
options.add_argument('--window-size=1920,1080')

# 關閉提示: Chrome正受到自動測試軟件的控制
# options.add_argument('--disable-infobars')  # 老版本Chrome瀏覽器的寫法
options.add_experimental_option("excludeSwitches", ['enable-automation'])

# 無界面運行
# options.add_argument('--headless')

# 配置代理
# options.add_argument("--proxy-server=http://127.0.0.1:9631")

# 其他設置: 不加載圖片, 設置語言, 設置User-Agent等

driver = WebChrome(executable_path=r"C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe",
                   chrome_options=options)

driver.get("http://www.baidu.com/")

time.sleep(5)
driver.quit()

注意事項:
若無界面運行時,拋出MoveTargetOutOfBoundsException異常, 則給瀏覽器設置--window-size參數後再試

2.2 Alert框的處理

driver.switch_to.alert.accept()

注意事項:
若當前頁面存在alert框,此時關閉瀏覽器時會拋出異常

2.3 登錄操作中簡單滑動滑塊操作

from selenium.webdriver import ActionChains

action_chains = ActionChains(driver)
d1 = driver.find_element_by_class_name("el-icon-d-arrow-right")  # 定位滑塊
action_chains.click_and_hold(d1).perform() # 鼠標左鍵按住滑塊不動
action_chains.reset_actions()  # 清楚之前的action
action_chains.move_by_offset(300, 0).perform() # 平行移動滑塊, 其中300表示x軸, 0表示y軸

2.4 自動處理Chrome瀏覽器的通知彈框

# 創建一個名字爲run.reg的文件, 內容如下. 雙擊執行此文件來修改註冊表信息
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google]

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
"DefaultPluginsSetting"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\PluginsAllowedForUrls]
"1"="http://ztc.njtopsun.com/topsun/#/"

注意事項:
  1) 文件中藍色部分內容需要替換成你自己要測試的網站
  2) Chrome在不同版本下設置自動處理通知彈框的方法不一樣,本示例中使用的Chrome版本爲Chrome 86
  3) Chrome中DefaultPluginsSetting參數說明, 請點擊這裏

原文地址:https://www.cnblogs.com/reconova-56/p/13967170.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章