如何在linux搭建airtest+chromeweb測試環境--(用命令行運行.air腳本)


大前堤:

如果你需要airtest提供的可視化測試報告,那你的操作系統,一定要有圖形化界面.

否則運行你的airtest腳本 會遇到這樣的問題

Xlib.error.DisplayNameError: Bad display name ""

你可能百度之后 遇到了xhost +命令

執行這個命令后,再運行測試腳本,又遇到這個問題

然后再百度,原來.Xauthority Xlib模塊都是有操作系統圖形化界面的模塊

再看看為什么會報這個錯呢?

因為在airtest_selenium模塊下的proxy.py文件調用了這一句代碼

from pynput.mouse import Controller, Button

pynput又是干什么的,是和鼠標鍵盤相關的模塊

既然你的操作系統無圖形化界面,而使用airtest_selenium又需要圖形化界面,這就沖突了.

注釋掉airtest_selenium關於pynput的相關代碼會發現,程序可以跑了,但是生成的可視化報告就是這樣的

所以如果你不需要 可視化的測試 報告,通過 修改proxy.py文件,你的airtest腳本是可以在無圖形化的界面的linux系統跑的.如果你需要可視化報告,則可能需要在其它的有圖形界面的系統中運行airtest web測試腳本

 

step1

創建虛擬環境 airtestVenv

mkvirtualenv airtestVenv

 列出所有虛擬環境

lsvirtualenv

在虛擬環境中安裝airtest pocoui

切換到airtestVenv虛擬環境

workon airtestVenv
pip3 install airtest
pip3 install pocoui
pip3  install selenium
pip3  install airtest_selenium
pip3 install pynput #有圖形化界面的操作系統安裝,無圖形化界面安裝也沒用,會報錯的

 驗證安裝成功:

(airtestVenv) [root@67 wangju]# airtest
usage: airtest [-h] {run,info,report} ...

positional arguments:
  {run,info,report}  run/info/report
    run              run script
    info             get & print author/title/desc info of script
    report           generate report of script

optional arguments:
  -h, --help         show this help message and exit

step2:

安裝chrome

參考:

https://blog.csdn.net/diyiday/article/details/83824878

1.安裝瀏覽器

指定yum 源

[root@67 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安裝

[root@67 ~]# curl https://intoli.com/install-google-chrome.sh | bash

 驗證安裝情況

[root@67 ~]# google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.baidu.com/

解決問題

nano /usr/bin/google-chrome

修改如下,即可正常打開瀏覽器了

exec -a "$0" "$HERE/chrome" "$@"  改為
exec -a "$0" "$HERE/chrome" "$@" --user-data-dir --no-sandbox
 

 再次使用命令打開chrome瀏覽器

[root@67 ~]# google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.baidu.com/

正常打開網頁了

 安裝完成后在/opt目錄下生成google安裝目錄

 安裝chromedriver

查看當前chrome版本

需選擇與chrome對應的版本安裝,

[root@67 ~]# google-chrome --version
Google Chrome 75.0.3770.80


 

我的chrome版本75.0.3770.8

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

在頁面搜索75.0.3770.8

 

將下載在本地的webdriver傳送至服務器

scp -r ./chromedriver root@10.2.1.92:/home/wangju/gitProject/Airtest/demoAir.air

如果下載在服務器使用unzip 解壓

unzip chromedriver_linux64.zip

 驗證安裝情況

./chromedriver

如圖所示,即安裝成功

 

建立軟連接:

才明白原來linux的軟鏈接就相當於windows的快捷方式呀

ln -s /opt/google/chromedriver /usr/bin/chromedriver

 step3使用測試腳本測試

偷懶沒有使用絕對路徑,使用的相對路徑,所以要自己切換路徑

當前文件夾是demoAir.air

別忘記切換到airtest的虛擬環境

先運行一個selenium腳本測試

報錯了

selenium.common.exceptions.WebDriverException: Message: unknown error: DevToolsActivePort file doesn't exist

解決辦法:

先排除此錯誤是由於不兼容的ChromeDriver版本和正在使用的Chrome瀏覽器版本造成的,使用最新的Chrome瀏覽器版本68的Chrome Driver.exe(v2.41)

版本號是一致的

我明明在本地測試的時候是可以運行腳本的,但是為什么移到centOS就會出錯了呢,是哪里有區別呢?

已經確定chrome和chromeDriver版本是一致的了,唯一不一樣的是,我按照教程做了如下配置

nano /usr/bin/google-chrome
這是我的測試腳本
 1 #coding=utf8 
 2 from selenium import webdriver 
 3 from selenium.webdriver.chrome.options import Options 
 4 chrome_options = Options() 
 5 chrome_options.add_argument('--headless') 
 6 chrome_options.add_argument('--disable-gpu') 
 7 driver = webdriver.Chrome(executable_path="./chromedriver", chrome_options=chrome_options) 
 8 #driver = webdriver.Chrome() 
 9 driver.get("https://www.baidu.com") 
10 print(driver.page_source) 
11 print(driver.current_url) 
12 #driver.quit()

這篇教程是把禁止沙箱模式寫到了chrome的配置文件中
我觀察了樓主的測試代碼
在代碼中並沒有體現下面這行代碼

chrome_options.add_argument('--no-sandbox')    # 禁止沙箱模式,否則肯能會報錯遇到chrome異常

所以猜測是不是配置chrome的配置文件后,所以樓主沒有在腳本中再做配置了呢?

是不是我改chrome的配置文件改出問題呢?因為我在本地的時候並沒有做這項配置,但在腳本中有 --no-sandbox腳本是可以跑通的

不管怎么說,這是我目前唯一想到有區別的地方了,先改回來試試

注釋了增加的代碼,而使用默認的配置

再次運行腳本就成功了

 

step4:修改proxy.py源文件

(指定chromedriver的位置,因為proxy.py默認是使用airtestIDE工具配置的chromedriver的位置的,如果脫離airtestIDE程序就會找不到chromedriver,所以需要自己手動配置)

增加這部分代碼 :

 

先使用find命令查找proxy.py的所在位置

sudo find / -name airtest_selenium

執行如下命令 運行測試腳本,並生成日志文件,注意當前文件夾是demoAir.air:

wangju@wangju-HP-348-G4:~/Airtest/demoAir.air$ airtest run demoAir.py  --log log/

執行如下命令,利用上一步生成的日志文件 生成可視化的測試報告 log.html,注意當前文件夾是Airtest

wangju@wangju-HP-348-G4:~/Airtest$ airtest report demoAir.air --log_root demoAir.air/log/ --outfile demoAir.air/log/log.html --lang zh
demoAir.air/log/log.html

如果看到demoAir.air/log/log.html表示已經在log文件夾下生成測試報告了,將該文件復制到本地,使用瀏覽器打開,查看腳本運行結果

 在/home/wangju/Airtest/demoAir.air/log文件夾中找到log.html文件,打開該文件查看測試結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM