1. 程式人生 > >Appium移動自動化測試-----AppiumDesktop錄製指令碼生成極簡指令碼

Appium移動自動化測試-----AppiumDesktop錄製指令碼生成極簡指令碼

AppiumDesktop啟動頁面:

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

platformName:'Android'    #Android手機
platformVersion:'4.3  '       #模擬器系統是4.3
deviceName:'192.168.105.101::5555'    # 這個是模擬器的裝置名稱

app:'D:\\app\\SHIPPER_Android_TEST_4.1.1.0.apk'        # 安裝自己待測app,型別為filepath

appPackage:'com.taobao.taobao'    #app的包名稱

appActivity:'com.taobao.tao.welcome.Welcome  '       #activity的名稱

使用命令檢視:adb shell dumpsys activity activities

noReset:是一個bool值,選TRUE。
如果想要使用真機,必須再加一個欄位udid,是text型別。

 

 2.引數配置好之後可以儲存下,然後啟動模擬器,再點Start Session按鈕就能定位元素了

 

定位元素資訊

寫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

 

點選該按鈕以後如下圖:

指令碼錄製.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
指令碼錄製.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()

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