【網易Airtest第10課】如何脫離AirtestIDE編寫/運行自動化腳本

2022-01-12 AirtestProject
同學們好,我是網易AirtestProject的團隊成員曉娟,歡迎大家來到我們的視頻教程專欄《14天Airtest自動化測試小白課程》。前面我們在教大家編寫自動化腳本的時候,一直用的是我們配套的編輯器AirtestIDE,那麼也會有很多同學,他們並不想局限在我們配套的IDE上。比如他們想 直接用命令行跑腳本 ,或者他們更 習慣使用其它的python編輯器 ,比如pycharm等等。所以今天我們來學習下,如何脫離AirtestIDE來編寫或者運行腳本。之前我們就說過,airtest、pocoui和airtest-selenium都是python第三方庫,所以只要在python環境裡面裝上這幾個庫,我們就可以在這個python環境裡面運行這些測試框架的腳本。而我們的 AIirtestIDE是內嵌了1個裝好了這些庫的精簡版的python環境 ,所以即使我們不在設置裡面配置任何本地的python環境,我們依然可以跑airtest、poco或者airtest-selenium腳本。當然,不使用IDE自帶的python環境,我們也可以在選項--設置中,設置同學們本地的python環境,以此來支持更多的python第三方庫:

同理,如果我們想用本地的python環境跑自動化腳本時,就必須保證這個環境已經安裝好了我們所需要的庫。另外,對於python版本,我們更建議大家選擇python3,python2我們雖然也支持,但畢竟官方也不維護python2了,所以我們更推薦大家使用python3作為大家的運行環境。目前我們也 已經支持了在Python3.9 下安裝我們的airtest、pocoui和airtest-selenium庫。當我們在本地安裝好1個python環境之後,可以直接執行 python 來查看本地python的詳細信息。

接下來,我們就可以安裝我們要用到的airtest和poco等庫了,命令如下:
pip install airtestpip install pocouipip install airtest-selenium

需要特別注意的是,poco框架的庫名叫pocoui,同學們不要寫錯了,如果不小心同時安裝了poco和pocoui,請同學們務必卸載掉poco,只留下pocoui,避免影響後續腳本的運行,刪除命令如下:
pip uninstall airtestpip uninstall pocouipip uninstall airtest-selenium

安裝好了對應的庫之後,我們可以使用 pip list 命令查看相應的庫是否安裝上了:

如果之後有版本更新,我們也可以直接使用命令將本地的庫直接更新到最新版本:
pip install -U airtestpip install -U pocouipip install -U airtest-selenium

如同學們在安裝過程中,有遇到安裝超時報錯的,可以嘗試更換一些國內的安裝源來安裝這些庫,方法如下:
# 豆瓣源pip install airtest -i https:# 常見的國內源阿里雲 http:中國科技大學 https:豆瓣(douban) http:清華大學 https:中國科學技術大學 http:

至此,本地的python環境就部署好了,其實還是非常簡單的,準備一個python環境,然後在這個環境裡面使用 pip install 命令安裝好airtest、pocoui和airtest-selenium庫即可。(不做web自動化的話,其實airtest-selenium也可以不安裝先,有需要的時候再把它裝上去。)在命令行執行腳本的命令是 airtest run + 腳本文件路徑 ,該命令的可傳參數如下:舉個例子,我們在D:/test/目錄下,新建1個叫report_test.air的腳本。並在腳本中編寫1條touch腳本。

然後我們在命令行運行這個腳本,指定測試設備為連接上的第一臺安卓設備,log保存路徑為D:/log/,運行腳本時進行錄屏操作,錄屏文件保存到D:/log/record01.mp4:
airtest run D:/test/report_test.air --device Android:/// --log D:/log/ --recording D:/log/record01.mp4

運行結束後,我們可以到指定目錄下查看是否生成了我們指定的log文件和錄屏文件:

① 如果腳本中沒有指定運行設備,那麼在編寫命令行的運行腳本命令時,就必須指定設備;如腳本已指定運行設備,則運行腳本的命令可以不指定設備,剛才我們的示例腳本是沒有指定設備的,如果命令行也不指定設備,命令行會提示你沒有連接設備,且腳本也不能跑下去。

② 同理,如果命令未指定log參數,則默認是不保存log內容的③ --device 後面跟的是用於初始化設備的URI字符串,連接iOS、安卓和Windows窗口的字符串是不一樣的,我們給大家準備了詳細的示例,一起來看一下:
# 什麼都不填寫,默認取當前連接中的第一臺手機Android:# 連接本機默認埠連的一臺設備號為79d03fa的手機Android:# 用本機的adb連接一臺adb connect過的遠程設備,注意10.254.60.1:5555其實是serialnoAndroid:

# 連接一個窗口句柄為123456的Windows窗口Windows:# 連接一個Windows窗口,窗口名稱匹配某個正則表達式Windows:# 連接windows桌面,不指定任何窗口Windows:

# 夜神模擬器(127.0.0.1:62001為夜神模擬器的埠號)Android:# 設備號為79d03fa的 MIUI11 設備Android:

更多關於設備字符串的內容,我們可以參看這篇公眾號教程:

④ 只有當airtest版本大於等於1.1.6時,--recording參數後面才允許自定義錄屏文件名,且必須以.mp4結尾。⑤ 只有當airtest版本大於等於1.1.7時,才有--no-image參數,才能指定運行腳本過程中不保存截圖。使用airtest run 命令運行完腳本以後,我們可以使用另一個命令, airtest report + 腳本文件路徑 指令來生成一份HTML格式的報告。以剛才的腳本為例,在命令行運行以後,我們就可以繼續生成它的報告了,指定log路徑為D:/log,生成html報告的路徑為D:/log/log.html,指定報告的語言為英文。
airtest report D:/test/report_test.air --log_root D:/log  --outfile D:/log/log.html --lang en

之後我們可以到指定的文件夾裡面查看對應的報告文件:

另外我們再來看下, --export 這個參數,使用這個參數,可以幫我們打包這份測試報告,然後我們可以直接把打包好的這份報告發送給別人查看。如果不使用--export來導出報告的話,html報告裡面的圖片資源、靜態資源路徑都是絕對路徑,發到別的電腦之後,別人是無法正常查看的。

只有導出之後的報告,裡面的圖片資源和靜態文件資源才會使用相對路徑,這樣把報告發送到別的電腦上時,我們才能夠正常查看。
airtest report D:/test/report_test.air --log_root D:/log  --lang en  --export D:/export/

打開指定的導出路徑,可以看到導出的測試報告文件裡面包含了非常多的東西:

報告裡面的圖片資源和靜態資源都是相對路徑,我們可以把這份報告發送給別人查看。

最後一個參數 --static_root ,用於指定靜態資源的路徑。因為我們每次導出一份報告,都會包含一份相同的static文件,它裡面放置了報告的一些css和js等文件。一般來說,除非報告的樣式做了某些更新,否則這些靜態資源文件都是固定不變的。因此我們可以將這些資源文件部署到靜態資源文件伺服器上,用例如 https://host:port/static/css/ 的路徑來訪問它。然後在生成報告時,將這個部署出來的伺服器地址作為 --static_root的參數傳過去,這樣導出的報告文件裡面將不再包含static文件,HTML報告想要訪問靜態資源文件時,訪問的就是 static_root給的地址:
airtest report D:/test/report_test.air --log_root D:/log  --lang en  --static_root https://host:port/  --export D:/export/

需要注意的是,如果傳入給static_root的不是以http開頭的資源伺服器地址,而是一個本地路徑,導出報告時,還是會把給定的本地路徑裡面的靜態文件複製過來一份。講完了如何在命令行上運行自動化腳本,接下來我們再來看看,如果不使用AirtestIDE,如何在其它python編輯器中編寫、運行Airtest和poco腳本。以pycharm編輯器為例,首先需要保證你所用項目使用的python環境裡安裝了airtest和pocoui庫。可以在文件--設置--項目中查看:

如未安裝,則點擊package右側的+號,把airtest和pocoui安裝好。環境弄好以後,我們就可以開始編寫自動化腳本了,新建一個.py文件,添加上引入和初始化代碼,也可以直接把.air腳本的初始化代碼複製過來,但需要注意的是,pycharm不會自動幫你連接設備,所以我們需要自己在腳本中添加連接設備的代碼,這裡以在auto_setup連接設備為例:
auto_setup(__file__,devices=["android://127.0.0.1:5037/emulator-5554?cap_method=JAVACAP&&ori_method=MINICAPORI&&touch_method=MINITOUCH"])

更多連接設備的接口,可以參看剛才給你們推薦的文章。確保先編寫完設備連接的腳本,再來編寫airtest腳本,這裡以點擊微信為例,首先截取一張微信icon的截圖,利用你們電腦裡裝有的截圖工具即可,然後把截圖文件保存在你本地路徑,比如 D:\atest_image\wechat.png,然後把截圖的保存路徑添加到你的點擊腳本裡面:
touch(Template(r"D:\atest_image\wechat.png", threshold=0.8,))

當然,如果要編寫poco腳本的話,因為在pycharm中看不到設備的UI樹,所以我們可以打開AirtestIDE來查看UI樹,然後在pycharm上編寫對應的poco語句即可。最後就是生成報告了,我們可以調用一些airtest提供的接口幫助我們生成報告,比如 simple_report LogToHtml 類等。

因為報告是根據log內容來生成的,所以我們需要在腳本初始化添加logdir參數,用於保存腳本運行的log內容到指定路徑,使用simple_report生成報告的時候,也要把logpath傳進去,讓他去對應的路徑找log內容來生成報告。關於用腳本生成報告更多詳細的內容,大家可以參看這篇推文,我們就不一一在這裡講述了。

那麼今天的內容就到這裡為止啦,這節課的內容比較多,大家課後可以多多實踐,好好消化下。至此,關於自動化腳本編寫專題的課程就講完了,下節課我們將進入一個新的章節,手把手教大家如何接入pocosdk,然後用poco這個框架來測試引擎渲染的遊戲。下期我們不見不散~(呀!這麼認真都看到這裡啦,幫忙點個讚或者在看鼓勵一下唄~灰常感謝~)

相關焦點

  • 巧用bat文件做Airtest腳本的「批量運行」
    之前我們的教程講過如何使用命令行運行Airtest腳本,實際上 .bat 文件裡面的命令也是靠 cmd.exe 解析執行的,所以我們可以在 .bat 文件中編寫運行airtest腳本的命令,以此來執行airtest腳本。
  • 教你如何批量運行自動化腳本,高效工作!
    實際上 .bat 文件裡面的命令也是靠 cmd.exe 解析執行的,所以我們可以在 .bat 文件中編寫運行 airtest 腳本的命令,以此來執行 airtest 腳本。我們來先來複習下,使用命令行運行 Airtest 腳本的指令: airtest run + 腳本文件路徑 ,另外還可以在命令後面跟上 --device、--log 和 --recording 等參數。
  • 搞定Airtest自動化測試的文字識別
    是一款 基於圖像識別原理 的跨平臺UI自動化測試框架,它能夠根據大量的 特徵點 來識別一個截圖在當前畫面中的位置,但是它並不能識別出截圖中具體包含了什麼文字。而在自動化測試的過程中,我們會經常遇到需要進行文字識別的場景,比如 識別驗證碼、識別截圖中的文字、讀取截圖中的數值 等等,遇到這些情況時我們可以如何處理呢?今天教大家用一款免費的開源圖像OCR文字識別軟體 -- Tesseract-OCR 來處理上述情況。
  • Windows-UI自動化:如何選擇合適的測試框架
    那麼這位老牌選手在Windows UI自動化測試上表現如何呢?官網文檔說明:http://appium.io/docs/en/drivers/windows/【簡單原理】基於屬性定位進行腳本編寫,通過埠連接WebDriverAgent驅動微軟自身的WinAppDriver,對於本機App進行佔用和操作。
  • APP UI自動化測試思路總結
    接下來,一起總結一下APP UI自動化測試的思路吧。一,開發語言選擇通常用於自動化測試的程式語言有:Python、Java、Javascript、Ruby、C#、PHP等。一般我們會選擇自己熟悉的程式語言來編寫自動化腳本,但對於編程基礎基本為0的童鞋(或者專注於做自動化測試的童鞋),推薦學習使用Python。
  • APP UI自動化測試,思路全總結在這裡了
    一般我們會選擇自己熟悉的程式語言來編寫自動化腳本,但對於編程基礎基本為0的童鞋(或者專注於做自動化測試的童鞋),推薦學習使用Python。相對於其他語言,Python做自動化測試有以下優點:選擇開發語言之後,我們需要選擇UI測試框架。目前較為主流或者使用較多的APP UI自動化測試框架有Appium、Airtest等。
  • 測試工程師必須要學會的APP UI 自動化都在這裡了!
    一般我們會選擇自己熟悉的程式語言來編寫自動化腳本,但對於編程基礎基本為0的童鞋(或者專注於做自動化測試的童鞋),推薦學習使用Python。相對於其他語言,Python做自動化測試有以下優點:選擇編開發語言之後,我們需要選擇UI測試框架。目前較為主流或者使用較多的APP UI自動化測試框架有Appium、Airtest等。
  • 常用遊戲自動化測試工具
    目前網上搜自動化測試就會出現一大堆自動化測試的內容,但是並不詳細全面,今天就來說一下遊戲測試行業中的常用的遊戲測試自動化工具。一、Airtest的UI自動化測試工具Airtest是一款基於圖像識別和基於poco的UI控制項搜索框架的測試工具,因此會更適合遊戲和APP的測試。
  • Web 自動化神器 TestCafe—用例編寫篇
    使用 TestCafe 編寫測試用例,必須要先使用 fixture 聲明一個測試夾具,然後在這個測試夾具下編寫測試用例,在一個編寫測試用例的 js 或 ts 文件中,可以聲明多個測試夾具import 'testcafe'fixture `登錄功能測試`上面是官方文檔中的
  • ​序|自動化測試概述
    引言如何讓0基礎的同學掌握自動化測試?
  • 初學者如何編寫Jmeter測試腳本?
    大致流程1、導入jar包:導入Jmeter相關jar包2、編寫腳本:使用Eclipse或者IntelliJ IDEA,進行Java測試腳本的編寫3、導出為jar包:使用Eclipse或者IntelliJ IDEA將測試腳本編譯打包為jar包導出4、配置Jmeter:使用自編譯的jar包,以及一些相關配置進行性能測試5
  • Minecraft:基於GameTest框架編寫模組
    第一章 緒論1.1 引言1.2 GameTest框架1.3 mojang-gametest模塊1.4 mojang-minecraft模塊1.5 發展現狀第二章 簡易入門2.1 清單文件配置2.2 腳本編寫
  • Compare Test Among 10 Luxury Pc Fans
    4Air volume test have difference  The primary purpose of fans is cooling the pccases, so the air volume test
  • 【厚積薄發】Airtest工具在使用時的卡頓問題
    這是第181篇UWA技術知識分享的推送。
  • pytest「conftest、pytest參數化、重運行、出測試報告」
    文章總覽圖一、conftest問題整理:1.這個conftest.py分路徑嗎?如果在TestCases下建這個包可以直接用嗎?那麼這個參數名就是用來接收每一組數據,如果你這個列表當中有10組數據,那麼參數名就依次接收這10組數據。參數名是放在測試用例當中的參數。列表數據就是那10組數據。
  • 使用Visual studio code 作為外部 IDE 編寫 Blender2.9 腳本
    Blender 有自己的內置文本編輯器,用於編寫腳本和加載項,但在外部 IDE中開發它們非常方便,這些 IDE 為用戶提供了更多功能,如自動完成、語法突出顯示、與版本控制系統的集成以及其他使開發更快、更容易的工具。這是一個免費的通用環境,支持各種程式語言的開發,包括 Blender API 和 Python語言。
  • 自動化測試基礎篇:Selenium 框架設計(POM)
    自動化測試框架1.什麼是自動化測試框架簡單來說,自動化測試框架就是由一些標準,協議,規則組成,提供腳本運行的環境。業務邏輯代碼和測試腳本分離,不像我們剛開始學習Selenium那樣,代碼和腳本在一個類文件裡演示。我們根本沒有用到代碼重構,復用。代碼和用例文件分離後,更加清晰,去多人開發腳本,方便調試。報告和日誌文件輸出,你執行了多少case,case結果如何,這都需要報告來展示,一般採用第三方插件來實現這個功能,好多報告格式是html,簡單,明了的風格。
  • 手把手教你編寫抖音自動評論腳本
    Appium和Airtest都可用於移動端自動化測試,Airtest是網易家的,想做評論詞雲是因為在這之前用Appium寫了一個爬個人微信朋友圈詞雲圖的程序(見圖1),同時Airtest操作更簡單,也在考慮的範圍。再後來,一直未實施,主要是覺得得用手機連著電腦,不能隨時隨地操作,就擱置了。近段時間因為工作時的一個想法,又把這事提起來了。
  • 英語語法:in the air與on the air的用法
    They jumped up and grabbed the basketball on the air.他們跳起來,在空中搶那個籃球。 17. on改成in。in the air表示「在空中」,而on the air表示「
  • 一次使用 Go 語言編寫腳本的經歷
    本文介紹了我如何嘗試使用 Go 語言進行腳本編程的經歷。文中我將討論 Go 腳本的必要性,我們預期的表現以及可能的實現方式。在討論過程中,我講深入探討腳本、Shell 和 Shebang。最終,我們將會討論讓 Go 腳本工作的解決方案。為什麼 Go 語言適合編寫腳本?