想用airtest的圖像識別功能,完成web端的UI自動化。
先實現一個小案例:
1、airtest+selenium-無頭瀏覽器
1 from airtest_selenium.proxy import WebChrome 2 3 chrome_options = webdriver.ChromeOptions() 4 chrome_options.add_argument('disable-infobars') 5 chrome_options.add_argument('--headless') # 無頭 6 chrome_options.add_argument("--no-sandbox") 7 driver = WebChrome(options=chrome_options)
2、現在airtestIDE中錄制腳本
3、把airtest IDE中的腳本復制到pycharm里,還需要修改下assert_template里的圖片保存位置。其他的一致
1 try: 2 self.driver.assert_template(Template(r"./../../data/airtest_picture/tpl1634889964329.png", record_pos=(0.169, -0.068), resolution=(3840, 1083), threshold=0.9), "頁面上存在百度圖片") 3 # record_pos:圖片坐標對應手機屏幕中心點的偏移值相對於手機分辨率的百分比,匹配時會優先匹配這附近的畫面 4 # resolution: 分辨率。當腳本執行時的手機不是錄制時的手機時,Airtest會對屏幕截圖按照分辨率進行縮放,最大程度兼容跨分辨率匹配 5 # threshold:識別閾值 6 except AssertionError: 7 print("斷言失敗")
部分參數含義:
- record_pos:圖片坐標對應手機屏幕中心點的偏移值相對於手機分辨率的百分比,匹配時會優先匹配這附近的畫面
- resolution: 分辨率。當腳本執行時的手機不是錄制時的手機時,Airtest會對屏幕截圖按照分辨率進行縮放,最大程度兼容跨分辨率匹配
- threshold:識別閾值,浮點類型,范圍是[0.0, 1.0],默認0.7
-
target_pos: 圖片點擊位置,整型,默認為5,即圖片的中心點
-
rgb: 是否開啟彩色識別,Bool類型,默認False。rgb=False時,Airtest會先將圖像轉為灰度圖再進行識別;為True時,指定使用彩色圖像進行識別。
-
一般情況下,我們都用默認的False即可,但假如畫面上有多個形狀相同顏色不同圖片時,就要設為True。
-
-
-
是當識別可信度=>0.7時就認為是匹配的。對於計算機來說,不存在2張完全一樣的圖片,計算機只能告訴你2張圖片的相似程度。比如相似度是0.9(90%)就是比較像,相似度是0.5(50%)就是不太像。計算機只會告訴你相似度,那這2張圖算不算匹配,是由人通過閾值決定的。比如我們說只要相似度70%以上,就算是一樣的。
-