日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

airtest web 录制滑块_Airtest之web自动化(一)

發(fā)布時間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 airtest web 录制滑块_Airtest之web自动化(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Airtest之web自動化(一)

[此文檔有許多涉及到gif動圖的地方,請全屏觀看]

了解Airtest:

簡介:

Airtest是由網(wǎng)易團隊開發(fā)的一款自動化框架,前期運用與游戲測試(通過截圖識別),后來又被運用到安卓測試以及web測試。這款自動化框架如此強大的原因來自其團隊自己開發(fā)的一個圖像識別框架,這個框架的祖宗就是一種新穎的圖形腳本語言Sikuli。Sikuli這個框架的原理是這樣的,計算機用戶不需要一行行的去寫代碼,而是用屏幕截屏的方式,用截出來的圖形擺列組合成神器的程序,這是Airtest的一部分。另外,Airtest也基于poco這個UI控件搜索框架,這個框架也是網(wǎng)易自家的跨平臺UI測試框架,原理類似于appium,通過控件的名稱,id之類的來定位目標控件,然后調(diào)用函數(shù)方法,例如click(),send_keys()之類的方法來對目標控件進行點擊或者是操作。

Airtest展示:

這個動圖是Airtest官方文檔中截取的,細心的同學(xué)可能已經(jīng)發(fā)現(xiàn):Airtest實現(xiàn)的腳本是python+selenium,剛剛接觸到這款框架的時候,我在想這不就是python+selenium的再封裝嗎,也沒有什么新穎的地方。但是細心認真的看,才會發(fā)現(xiàn)Airtest強大的之處...

一:Airtest打開瀏覽器,導(dǎo)入必須的類

在配置好chrome瀏覽器,以及webdriver之后(此操作很簡單),點擊AirtestIDE中selenium窗左上方的像地球一樣的圖標,打開瀏覽器,然后腳本編輯窗會提示你是否導(dǎo)入必要的模塊,點擊yes(已經(jīng)導(dǎo)入了的就點擊No)

點擊yes后結(jié)果:可以看到此處除了導(dǎo)入必要的類以外,還實例化了driver:(driver = WebChrome()),并設(shè)置了隱性等待時間:(driver.implicitly_wait(20)),這些都是可以編輯的

start_web按鈕:實現(xiàn)driver.get()操作

start_web按鈕點擊就會生成代碼,這樣類型的按鈕還有許多,他們被稱為直接生成代碼按鈕:(這一類按鈕,點擊后直接生成代碼。不需多余操作,不過部分按鈕會根據(jù)當前瀏覽器實際情況生成不同的參數(shù)。 對于Firefox,不會在頁面上顯示檢視器,而是直接生成代碼)

start_web: 點擊該按鈕后生成當前瀏覽器所訪問的頁面地址的語句。例: driver.get("https://github.com/AirtestProject")

snapshot: 點擊該按鈕后生成對當前頁面進行截圖的語句。例: driver.snapshot()

new_tab: 點擊該按鈕生成一條跳轉(zhuǎn)在最新出現(xiàn)的標簽頁的語句,一般用在一個生成新的標簽頁的語句后面。例:driver.switch_to_latest_window()

previous_tab: 點擊該按鈕生成一條跳轉(zhuǎn)到當前標簽頁之前的標簽頁(父標簽)的語句。例:driver.switch_to_last_window()

back: 點擊該按鈕,生成后退到上一個頁面的語句。例:driver.back()

forward: 點擊該按鈕,生成前進到下一個頁面的語句。例:driver.forward()

airtest—錄制:

如動圖所示:點擊AirtestIDE中selenium窗中右上角攝像頭的圖標之后便可以開始錄制,在瀏覽器中的每一步操作都會變?yōu)閜ython代碼保存在腳本編輯窗中。當然錄制也會有些弊端,所以需要酌情使用。弊端:元素定位時不能通過id,name這種簡單方式定位,且xpath過長時可能會出現(xiàn)bug(此處可以自己嘗試一下),解決方案,所有的元素定位都可以自己寫,也可以通過airtest_touch(圖像識別點擊)跳過元素定位——后面細講

類似于錄制的按鈕也還存在許多,這類按鈕被稱作: Inspect類按鈕(這一類按鈕點擊后,不會直接生成代碼;瀏覽器會進入inspect模式,用戶可以在瀏覽器中選擇自己想要操作的元素進行點擊,然后編輯框內(nèi)會生成代碼定位到對應(yīng)元素,并生成對應(yīng)操作的代碼)

Inspect按鈕: 點擊這個按鈕后,選取頁面元素,會生成一個定位到該元素的語句。但不會在后面生成對應(yīng)的操作代碼,用戶可以自行補充想要執(zhí)行的selenium語句。例: driver.find_element_by_xpath("//*[@id=\"navbarContent\"]/ul/li[2]/a")還支持其他查找元素的方法*

touch按鈕:這個按鈕,點擊后會生成點擊對應(yīng)元素的代碼。例: driver.find_element_by_xpath("//*[@id=\"navbarContent\"]/ul/li[2]/a").click()

text按鈕:點擊這個按鈕,會生成一條在指定元素內(nèi)輸入文本的語句,生成代碼后,用戶需自行在內(nèi)部填入需要輸入的文本。同時,用戶可以定義在輸入后執(zhí)行某個鍵盤事件,如回車。例: driver.find_element_by_xpath("//input[@placeholder='Search']").send_keys("Airtest Project", Keys.ENTER)

assert按鈕:assert按鈕在點擊后,生成一條assert頁面元素是否存在的語句。這是一條Airtest-Selenium封裝的語句,在運行時會嘗試用參數(shù)代表的方法去尋找元素,如果找到會返回True,如果沒找到會返回False。可用于測試腳本是否成功的判讀。例: driver.assert_exist("//*[@id=\"js-pjax-container\"]/div/header/div/nav/a[2]", "xpath")

Airtest——Airtest_touch

可以避免復(fù)雜的元素定位,以及框架的頻繁切換的情況

airtest—assert_template(基于圖片識別的斷言)

上面的兩個按鈕是Airtest自帶的圖像識別按鈕(這一類按鈕,點擊后進入截取圖像模式,對當前屏幕進行框選區(qū)域并截圖。)

airtest_touch: 點擊該按鈕開啟截屏模式,對當前屏幕進行截屏,可從瀏覽器中截取區(qū)域圖片。表示對截取圖片進行點擊。例:

1_airtest_touch

assert_template: 點擊該按鈕后,對當前屏幕截圖。表示斷言當前瀏覽器存在該圖片。例

1_assert_template

airtest——測試報告:

Airtest腳本運行完成之后會自動生成測試報告,點擊IDE上方的LOG頁簽按鈕及可查看,測試報告會將整個腳本的每一個步驟記錄下來,最新版本的測試報告與動圖展示的樣式還有些不一樣,但是內(nèi)容是差不多的:

Airtest其他操作:

Airtest生成的代碼是純python代碼,所以還有很多其他操作可以直接用python+selenium實現(xiàn)

上傳文件:

1、定位頁面上用于上傳文件的input元素,其屬性應(yīng)該是type為file(通常為上傳文件的那個框或按鈕)

2、用driver.find_element_by...定位該元素

3、對該元素進行send_Keys()操作,內(nèi)容為你要上傳的文件

加載用戶配置文件:有時候需要繞過驗證碼,或者用到瀏覽器中其他配置時使用

1、在瀏覽器啟動代碼之前創(chuàng)建ChromeOptions()屬性option

2、在option中通過add_argument()方法添加屬性‘--user--data--dir’

3、在調(diào)用webChrome方法啟動瀏覽器之前,加上chrome_options = option參數(shù)加載用戶配置文件

4、訪問網(wǎng)站,就可以加載本地瀏覽器已經(jīng)記錄的cookie

代碼如下:

option = ChromeOptions()

?

option.add_argument(‘--user--data--dir = "你的瀏覽器存儲配置文件的路徑"’)

?

driver = WebChrome(chrome_options = option)

附:

附一個之前為了這片介紹而寫的一個小腳本:

本來想用這個腳本的實現(xiàn)過程來自己來錄制gif講解的,但是太錄制出來的效果不怎么好,也太耗時了,于是就放棄了。

總結(jié)一波Airtest的亮點:

1、能夠快速定位元素,一鍵實現(xiàn)許多我們常用的動作(點擊,輸入,前進,后退,截圖...)

2、將selenium關(guān)于元素的斷言實現(xiàn)了封裝

3、可以錄制腳本,降低了自動化的難度

4、一鍵切換窗口,少去了通過句柄切換窗口的煩惱

5、基于圖片識別的點擊和斷言,避免了元素難定位,iframe切換頻繁的問題

整個腳本實現(xiàn)過程就在2分鐘左右,用Airtest來輔助寫自動化腳本的效率真的很高,但是現(xiàn)在的唯一的問題是找不到整套可以預(yù)期配合的自動化框架,也難以實現(xiàn)PO設(shè)計理念,測試報告對于整個項目來說也是相當冗余的。

但是Airtest錄制的腳本是可以在其他python環(huán)境中運行,需要我們安裝其依賴的兩個庫:’atrtest‘以及’poco‘,這樣的話,上面所講的缺點還是有辦法解決的(下一貼再講)。

總結(jié)

以上是生活随笔為你收集整理的airtest web 录制滑块_Airtest之web自动化(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。