1. 程式人生 > 其它 >Airtest學習(二)Airtest-Selenium 點選 斷言 生成報告

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/ 如出現轉載未宣告 將追究法律責任~謝謝合作