Selenium是一個用於Web應用程序的自動化測試工具。它直接運行在瀏覽器中,可以模擬用戶在瀏覽器上面的行為操作。在AirtestIDE中,開發者也給提供了使用Selenium的窗口。不過使用的框架是Airtest-Selenium框架。Airtest-Selenium是對selenium的python庫做的一層封裝,它添加了部分圖像識別的接口,也可以生成網頁版測試報告。
一、IDE中的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的路徑設置好,才能正常插入上述代碼。
二、Selenium的常用方法
from airtest_selenium.proxy import WebChrome import time #打開瀏覽器 driver = WebChrome(r"D:\tools\driver\chromedriver.exe") driver.implicitly_wait(20) #設置瀏覽器最大化 driver.maximize_window() #打開網頁 driver.get("http://www.baidu.com") #輸入百度一下 driver.find_element_by_id('kw').send_keys("馬保國") #點擊 百度一下 driver.find_element_by_id("su").click() #點擊 馬保國 百度百科 driver.find_element_by_xpath('//div[@id="content_left"]/div[1]//h3').click() #切換標簽頁面, 切換到新打開的標簽頁, airtest單獨封裝的方法 driver.switch_to_new_tab() #獲取馬保國結束 titledesc = driver.find_element_by_xpath('//dd/h2').text print(titledesc) time.sleep(2) #切換回上一頁 driver.switch_to_previous_tab() #點擊 圖片 driver.find_element_by_xpath('//div[@class="s_tab_inner"]/a[3]').click() #關閉瀏覽器 driver.quit()
三、Airtest-Selenium簡介
3.1.圖像識別接口
Airtest-Selenium對圖像識別的封裝有兩個接口,圖像識別點擊和圖像識別斷言:
①點擊Selenium Window下方的airtest_touch按鈕
在瀏覽器頁面上截取你想要點擊位置的圖片,雙擊完成截圖,腳本編輯窗口會自動生成1條圖像識別點擊的腳本
driver.airtest_touch(Template(r"tpl1620806672599.png", record_pos=(-0.17, -0.042), resolution=(1920, 1080)))
②點擊Selenium Window下方的airtest_template按鈕
在瀏覽器頁面上截取你想要進行斷言的圖片,雙擊完成截圖,腳本編輯窗口會自動生成1條圖像識別斷言腳本
driver.assert_template(Template(r"tpl1620806934003.png", record_pos=(-0.163, -0.039), resolution=(1920, 1080)), "成功打開百度首頁")
3.2.多標簽頁切換
多標簽頁
selenium提供了切換標簽頁的接口。
driver.switch_to.window(driver.window_handles[number])
這個語句執行后,可以切換到第number個打開的標簽頁。但是對於用戶來說,這個接口不是那么好理解與調用,因為這樣需要記住標簽打開的順序。
大部分時候,切換標簽頁的操作一般都出現在:打開新窗口、關閉標簽頁這兩種情況下。因此,Airtset-Selenium封裝了兩個接口:
driver.switch_to_new_tab()
driver.switch_to_previous_tab()
用戶只需在切換到最新打開的標簽頁時,調用switch_to_new_tab
。另外在結束當前標簽頁時,切換到上一個打開的標簽頁時,調用switch_to_previous_tab()
即可,
生成報告
被Airtest-Selenium封裝的接口,運行過后都會生成對應的報告,在AirtestIDE中可以直接點擊生成報告按鈕,即可查看對應的報告內容。