Airtest學習(二)Airtest-Selenium 點選 斷言 生成報告
前言
Selenium是一個用於Web應用程式的自動化測試工具。它直接執行在瀏覽器中,可以模擬使用者在瀏覽器上面的行為操作。
在AirtestIDE中,開發者也給我們提供了使用Selenium的視窗。不過使用的框架是Airtest-Selenium框架。Airtest-Selenium是對selenium的python庫做的一層封裝,它添加了部分影象識別的介面,也可以生成網頁版測試報告。
本文將藉助IDE上的Selenium視窗,來給大家講解在瀏覽器上進行自動化測試的實戰。
IDE中的Selenium視窗
在AirtestIDE中調出Selenium的視窗
預設情況下,IDE沒有並顯示Selenium的視窗,所以我們需要在IDE頂部的視窗
Selenium Window
勾選上,勾選之後Selenium的窗口才會顯示在IDE介面的左側。
插入初始程式碼的快捷按鈕
Selenium Window給我們提供了一些常用的按鈕,比如點選視窗下類似地球的按鈕,會自動幫我們在指令碼編輯視窗插入一些初始化程式碼:
插入程式碼之前,我們需要在指令碼視窗彈出的黃色提供框中,選擇Yes允許插入程式碼:
這樣,指令碼編輯窗就會自動插入如下程式碼:
# 引入selenium的webdriver模組 from selenium import webdriver from selenium.webdriver.common.keys import Keys from airtest_selenium.proxy import WebChrome #建立一個例項,程式碼執行到這裡,會開啟一個chrome瀏覽器 driver = WebChrome() driver.implicitly_wait(20)
需要注意的是,如果是首次使用這個按鈕,IDE會彈窗提示需要設定谷歌瀏覽器的路徑:
這時我們就需要先到選項--設定
中,找到Selenium那部分內容,然後把chrome的路徑設定好(chrome路徑可右鍵檢視屬性),才能正常插入上述程式碼。
Selenium的常用方法
開啟指定網址
我們以開啟百度首頁為例子:
driver.get("https://www.baidu.com/")
driver.get()
方法會在瀏覽器中開啟一個指定的網址,給它傳入網址地址即可。
最大化視窗
driver.maximize_window()
關閉視窗/瀏覽器
# 關閉當前視窗,如果瀏覽器此時只有1個視窗,瀏覽器也會被關閉 driver.close() # 退出驅動關閉所有視窗 driver.quit()
Airtest-Selenium簡介
上文我們提到Airtest-Selenium是基於Selenium語法的,但是Airtest的開發者們還另外封裝瞭如下方法:
影象識別介面
Airtest-Selenium對影象識別的封裝有兩個介面,影象識別點選和影象識別斷言:
①點選Selenium Window下方的airtest_touch按鈕
在瀏覽器頁面上擷取你想要點選位置的圖片,雙擊完成截圖,指令碼編輯視窗會自動生成1條影象識別點選的指令碼
driver.airtest_touch(Template(r"tpl1582031994893.png", record_pos=(8.99, 5.23), resolution=(100, 100)))
②點選Selenium Window下方的airtest_touch按鈕
在瀏覽器頁面上擷取你想要進行斷言的圖片,雙擊完成截圖,指令碼編輯視窗會自動生成1條影象識別斷言指令碼
driver.assert_template(Template(r"tpl1582032716811.png", record_pos=(0.51, 1.315), resolution=(100, 100)), "成功開啟airlab官網")
關於Selenium更多的斷言例項,詳看我們之前的推文“測試同學都應該知道的斷言知識...。
值得注意的是,這兩個介面是基於Airtest框架的影象識別封裝,如果影象指令碼執行時在網頁中找不到對應影象,會丟擲Target not found on screen
的異常。
多標籤頁錄製
selenium提供了切換標籤頁的介面。
driver.switch_to.window(driver.window_handles[number])
這個語句執行後,可以切換到第number個開啟的標籤頁。但是對於使用者來說,這個介面不是那麼好理解與呼叫,因為這樣需要記住標籤開啟的順序。
而大部分時候,切換標籤頁的操作一般都出現在:開啟新視窗、關閉標籤頁這兩種情況下。因此,Airtset-Selenium封裝了兩個介面:
driver.switch_to_new_tab() driver.switch_to_previous_tab()
在這個介面內部,Airtest-Selenium維護了標籤頁的組織結構。使用者只需在開啟新標籤頁時,呼叫switch_to_new_tab
。
另外在結束當前標籤頁時,回到上一個標籤頁時,呼叫switch_to_previous_tab()
即可,不再需要去考慮當前是第幾個這樣之類的問題。
生成報告
被Airtest-Selenium封裝的介面,執行過後都會生成對應的報告,在AirtestIDE中可以直接點選生成報告按鈕,即可檢視對應的報告內容。
小結
我們以1個小的實戰案例來總結今天講述的內容:
# -*- encoding=utf8 -*- __author__ = "19617" from airtest.core.api import * from selenium import webdriver from selenium.webdriver.common.keys import Keys from airtest_selenium.proxy import WebChrome driver = WebChrome() driver.implicitly_wait(20) driver.get("https://airlab-gl.163.com/b2b") driver.maximize_window() driver.assert_template(Template(r"tpl1582032716811.png", record_pos=(0.51, 1.315), resolution=(100, 100)), "成功開啟airlab官網") driver.airtest_touch(Template(r"tpl1582034527805.png", record_pos=(8.975, 5.765), resolution=(100, 100))) driver.switch_to_new_tab() driver.switch_to_previous_tab() driver.quit()宣告 歡迎轉載,但請保留文章原始出處:) 部落格園:https://www.cnblogs.com/chenxiaomeng/ 如出現轉載未宣告 將追究法律責任~謝謝合作