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界面的左側。

image

image

插入初始代碼的快捷按鈕

Selenium Window給我們提供了一些常用的按鈕,比如點擊窗口下類似地球的按鈕,會自動幫我們在腳本編輯窗口插入一些初始化代碼:

image

插入代碼之前,我們需要在腳本窗口彈出的黃色提供框中,選擇Yes允許插入代碼:

image

這樣,腳本編輯窗就會自動插入如下代碼:

# 引入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會彈窗提示需要設置谷歌瀏覽器的路徑:

image

這時我們就需要先到選項--設置中,找到Selenium那部分內容,然后把chrome的路徑設置好(chrome路徑可右鍵查看屬性),才能正常插入上述代碼。

image

Selenium的常用方法

打開指定網址

 

 

我們以打開微博首頁為例子:

driver.get("https://weibo.com/")

 

driver.get() 方法會在瀏覽器中打開一個指定的網址,給它傳入網址地址即可。

最大化窗口
driver.maximize_window()

 

關閉窗口/瀏覽器
# 關閉當前窗口,如果瀏覽器此時只有1個窗口,瀏覽器也會被關閉
driver.close()

# 退出驅動關閉所有窗口
driver.quit()

 

Airtest-Selenium簡介

上文我們提到Airtest-Selenium是基於Selenium語法的,但是Airtest的開發者們還另外封裝了如下方法:

圖像識別接口

Airtest-Selenium對圖像識別的封裝有兩個接口,圖像識別點擊和圖像識別斷言:

①點擊Selenium Window下方的airtest_touch按鈕

image

在瀏覽器頁面上截取你想要點擊位置的圖片,雙擊完成截圖,腳本編輯窗口會自動生成1條圖像識別點擊的腳本

image

driver.airtest_touch(Template(r"tpl1582031994893.png", record_pos=(8.99, 5.23), resolution=(100, 100)))

 

②點擊Selenium Window下方的airtest_touch按鈕

image

在瀏覽器頁面上截取你想要進行斷言的圖片,雙擊完成截圖,腳本編輯窗口會自動生成1條圖像識別斷言腳本

image

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中可以直接點擊生成報告按鈕,即可查看對應的報告內容。

image

小結

我們以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()
復制代碼

 

image


免責聲明!

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



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