1. 程式人生 > >AppiumDesktop用法介紹

AppiumDesktop用法介紹

blank 測試框架 介紹 .com 文本 eat for 官網 rom

轉自:http://www.jianshu.com/p/bf1ca3d4ac76

寫這篇文章的心情

真的很開心,我看著官網介紹竟然對AppiumDesktop略懂皮毛了。今天特意寫出來,希望可以幫助一些初入坑的夥伴們。AppiumDesktop真的是一個好東西:
1、首先他可以定為元素信息(這裏所說的元素是指App上的空間),這一點它和Android自帶的uiautomatorviewer一樣,但是AppiumDesktop可以定位iOS和Android兩個操作系統的App;
2、還有一點他可以錄制腳本。這真的就很牛逼了。腳本語言還可以自己選擇,比如我選擇使用Python語言,那麽錄制出的腳本就是Python語言的。但是對於這一點上官網說了,這個功能只做學習的工具,不能夠作為代碼生成器(In sum, it is a learning tool, not a robust code generation feature, and should be used as such.)。

技術分享
AppiumDesktop.png

上圖就是AppiumDesktop Inspactor啟動以後的樣子,接下來咱們就講講怎麽用這個神秘的AppiumDesktop。

什麽是AppiumDesktop

有人說AppiumDesktop是Appium新版的叫法,也就是在Xcode8之前和之後的叫法。因為Xcode8之前自帶的自動化測試框架叫做uiAutomation,Xcode8之後完全棄用了這一框架,開始使用XCUITest,這導致Appium大修其下層機制,以使用Facebook的WebDriverAgen
,也就是從這個時候在用Appium測試iOS應用的時候必須在iPhone手機上首先安裝一個應用叫:WebDriverAgentRunner。也就是通過這個應用來啟動我們被測應用。
所以AppiumDesktop不是Appium

Appium的圖標是這樣的:


技術分享
Appium.png

AppiumDesktop的圖標是這樣的:


技術分享
Appium Desktop.png
AppiumDesktop啟動以後的頁面是這樣的:
技術分享
AppiumDesktop啟動頁面.png

AppiumDesktop 服務啟動的頁面(AppiumDesktop現在已經是1.6.5版本)是這樣的:


技術分享
AppiumDesktop Server啟動頁面.png

AppiumDesktop啟動的頁面是這樣的:


技術分享
Appium啟動頁面.png

啟動Appium Inspector

啟動AppiumDesktop以後點擊該頁面右上角的Start New Session按鈕,就會啟動一個新的會話窗口(如下圖),在這個窗口我們需要配置一些Desired Capabilities信息:

技術分享
Desired Capabilities.png
這裏是以iPhone 7 Plus模擬器為例進行講解:
platformName:因為用的是iOS手機
platformVersion:和實際模擬器版本一致,我的模擬器是10.3版本
deviceName:我是用的iPhone 7 Plus,你也可以填寫iPhone Simulator,會啟動一個默認的(iPhone 6)模擬器
app:所要安裝的app這裏安裝的是官方提供的一個Demo。當然也可以安裝自己待測app,但是就不一定是text了(可能是filepath)
noReset:是一個bool值,選TRUE。
如果想要使用真機,必須再加一個字段udid,是text類型。
通過終端獲取已連接電腦的iPhone的 udid方法:

idevice_id -l

配置好這些信息以後點擊Save As...進行保存,保存以後以備日後使用(如果需要),這些信息被保存在“Saved Capability Sets”裏。然後點擊Start Session就可以啟動Inspector了,這個過程比較慢,需要稍等幾分鐘。然後就會出現文章第一個圖所示的窗口。

定位元素信息

寫Appium腳本的最重要的一個信息是定位元素,獲取元素的ID或者xpath等等類似的信息。
只需要點擊Inspector最左邊一欄的Select按鈕,然後再去點擊所要獲取信息的元素即可,當元素突出顯示時,其信息將顯示在Inspector右側的詳細視圖中。有些是用accessibility id 定位,有些是xpath定位或者其他的定位信息,但是在iOS應用上Appium推薦使用accessibility id 來定位一個元素信息。
在Inspector窗口的中間是您的應用程序的層次結構,表示為XML。

滑動頁面(元素)

現在可以定位當前頁面的元素了,但是怎麽滑動到下一個頁面或者怎麽滑動頁面上的滑動條(slider)呢?
選中Swipe。模擬在手機上的操作手勢,從起點到終點各點擊一下,就實現了滑動。

點擊某一個元素

如果我們想要點擊某一個元素進行下一步操作,比如在輸入框內輸入文本或者彈出一個alert該怎麽操作呢?
選中Tap。然後再去點擊textfield或者alert我們就可以進行下一個操作了。如果想要定位alert上的元素信息,那就在alert彈出的時候在切換到Select,然後點擊想要定位的元素就行了。

錄制腳本

這真的是一個很實用的功能。他似乎解決了我們一個大問題,那就是該使用哪個API的問題以及腳本的編寫規範的問題。對於初步入坑的小夥伴來說是一個很好的參考。腳本錄制功能就是那個眼睛圖標,如下圖:


技術分享
腳本錄制.png

點擊該按鈕以後如下圖:

技術分享
腳本錄制.png

然後就可以在左邊隨便對App進行操作了,此處我進行的操作有:點擊輸入框,點擊Alert,滑動滑動條,滑動屏幕,點擊軟鍵盤並輸入文本(這裏我選擇是Python語言)。這時候Inspector生成的腳本是非常簡單的,只是對你操作的步驟進行記錄,還不能執行,這段腳本如下:

TouchAction(driver).tap([(167, 73)])
TouchAction(driver).tap([(81, 300)])
TouchAction(driver).tap([(303, 414)])
el1 = driver.find_element_by_accessibility_id("IntegerA")
el1.click()
el1.send_keys("Hello")
TouchAction(driver)
.press({x: 198, y: 393})
.moveTo({x: 50: y: 0})
.release()
TouchAction(driver)
.press({x: 335, y: 264})
.moveTo({x: -183: y: -3})
.release()
TouchAction(driver).tap([(191, 498)])
TouchAction(driver).tap([(357, 698)])

反正我沒看懂這段代碼。別擔心,這只是Inspector默認生成的極簡腳本,善良的Inspectory為我們提供了一個功能那就是將極簡腳本變成可執行腳本,操作如下圖:

技術分享
腳本錄制.png

現在腳本就變成了這個樣子:

# This sample code uses the Appium python client
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python
from appium import webdriver
caps = {}
caps["platformName"] = "iOS"
caps["platformVersion"] = "10.3"
caps["deviceName"] = "iPhone 7 Plus"
caps["app"] = "http://appium.s3.amazonaws.com/TestApp7.1.app.zip"
caps["noReset"] = True
driver = webdriver.remote("http://0.0.0.0:4723/wd/hub", caps)
TouchAction(driver).tap([(167, 73)])
TouchAction(driver).tap([(81, 300)])
TouchAction(driver).tap([(303, 414)])
el1 = driver.find_element_by_accessibility_id("IntegerA")
el1.click()
el1.send_keys("Hello")
TouchAction(driver)
.press({x: 198, y: 393})
.moveTo({x: 50: y: 0})
.release()
TouchAction(driver)
.press({x: 335, y: 264})
.moveTo({x: -183: y: -3})
.release()
TouchAction(driver).tap([(191, 498)])
TouchAction(driver).tap([(357, 698)])
driver.quit()

這樣是不是就和我們寫的腳本格式一樣了,你學會了嗎?
在學習過程中遇到問題可以留言,互相學習,共同進步!



作者:會做飯的廚子
鏈接:http://www.jianshu.com/p/bf1ca3d4ac76
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

AppiumDesktop用法介紹