當(dāng)我們?cè)趯懽詣?dòng)化測(cè)試腳本的時(shí)候,傳統(tǒng)情況下一定要知道元素的屬性,如id、name、class等。那么通過(guò)AI的方式定位元素可能就不需要知道元素的屬性,評(píng)價(jià)人對(duì)元素的判斷來(lái)定位,比如,看到一個(gè)搜索框,直接使用ai:search
來(lái)定位, 或者我想定位一個(gè)關(guān)閉按鈕,之直接使用 ai:close
,我們并不需要知道這搜索框和關(guān)閉按鈕的屬性。
appium 通過(guò)插件的方式可以支持AI定位。我相信你已經(jīng)早就看過(guò)相關(guān)文章了,可是,你動(dòng)手體驗(yàn)了么?為體驗(yàn)一個(gè)這種定位方式我花了兩周時(shí)間(其實(shí),主要是上周工作太忙,哈哈?。@里把我的操作過(guò)程告訴你。
首先,需要一些系統(tǒng)依賴項(xiàng)來(lái)處理圖像。
macOS
Linux
sudo apt-get install pkg-config libcairo2-dev libpango* libpng-dev libjpeg-dev giflib*
Windows
暫不支持。
如果遇到問(wèn)題,您可能必須單獨(dú)安裝每個(gè)包。
我一開(kāi)始在Windows試了半天不成功,因?yàn)槲矣鞋F(xiàn)成的appium環(huán)境,后來(lái)發(fā)現(xiàn)壓根不支持,于是,換成了macOS, 所以后面的操作在macOS下完成,當(dāng)然,如果你有Linux環(huán)境,我覺(jué)得也是OK的。
因?yàn)槲乙僮鞯囊苿?dòng)設(shè)備是Android, 所以需要安裝Android SDK, 那么Android Studio集成了Android SDK。
下載android studio:https://developer.android.com/studio
在安裝Android Studio的過(guò)程中需要設(shè)置android SDK的路徑,我的路徑為:
然后,需要配置環(huán)境變量:sudo vi ~/.bash_profile
ANDROID_HOME=/Users/tech/Library/Android/sdk
PATH=${PATH}:${ANDROID_HOME}/platform-tools
PATH=${PATH}:${ANDROID_HOME}/tools
最后,使配置生效:source ~/.bash_profile
1、不要使用appium-desktop, 通過(guò)命令方式安裝appium。
2、安裝appium-doctor
> npm install appium-doctor
3、通過(guò)appium-doctor
命令檢查環(huán)境:
GtiHub地址:https://github.com/testdotai/appium-classifier-plugin
使用Appium 1.9.2-beta版以上。另外,一定要使用 XCUITest 驅(qū)動(dòng)程序(用于iOS)或UiAutomator2或Espresso驅(qū)動(dòng)程序(用于Android)。較老的iOS和Android驅(qū)動(dòng)程序不支持所需的Appium在任何情況下,都不推薦使用。
要使這個(gè)插件對(duì)Appium可用,只需轉(zhuǎn)到主appium項(xiàng)目的安裝目錄下面,并運(yùn)行:
> cd /usr/local/lib/node_modules/appium
> npm install test-ai-classifier
將這個(gè)插件安裝到Appium的依賴樹(shù)中,并使其可用。
我在安裝這個(gè)插件的時(shí)候各種報(bào)錯(cuò),你可以試試下面的命令。
在安裝過(guò)程發(fā)現(xiàn)有依賴google TensorFlow 的庫(kù)。
1、通過(guò)命令的方式啟動(dòng)appium
> appium
[Appium] Welcome to Appium v1.14.0
[Appium] Appium REST http interface listener started on 0.0.0.0:4723
...
2、編寫自動(dòng)化測(cè)試腳本:
automationName
如果要測(cè)試的是Android的話,必須要指為UiAutomator2
或 Espresso
。
customFindModules
必須要指定為 {'ai': 'test-ai-classifier'}
。
testaiConfidenceThreshold
此功能決定了考慮元素的最低置信度。默認(rèn)情況下,值為0.2。參數(shù)介于0和1之間的數(shù)字,其中1表示信心必須完美,0表示根本不需要信任。
shouldUseCompactResponses
這指示appium在找到元素時(shí)包含有關(guān)元素的額外信息,這大大加快了獲取此插件的輸入過(guò)程。
最終,我要體驗(yàn)的代碼就是這一行:
driver.find_element_by_custom('ai:search').click()
通過(guò)ai來(lái)定位搜索框。
確實(shí)定位到了,可是定位的速度特別慢,大概需要10~20秒吧!
如果,你想知道 appium-classifier-plugin
支持那些類型的元素定位,看這里:https://github.com/testdotai/appium-classifier-plugin/blob/master/lib/labels.js
目前支持100多種類型。
聯(lián)系客服