第三章 Appium API介紹

     在學習應用一個框架以前,應該瞭解一下這個框架的總體結構或是相應的API函數,在網上搜了一下,也沒有找到相應的文檔,我平時寫測試用例的時候都是一邊寫一邊查看找相應的API函數。這篇文章還不錯:http://www.51testing.com/html/15/n-1408815.html,就拷貝過來,擴展一下,但願對你們的學習有所幫助。html

3.1經常使用的API函數

3.1.1 獲取信息類API

(1)獲取默認系統語言對應的Strings.xml文件內的數據。android

get_app_string()ios

(2)查找某一個語言環境對應的字符串文件Strings.xml內數據。數組

get_app_string(String language)服務器

(3)獲取當前activity,好比(.ApiDemos)網絡

current_activity()app

3.1.2 App安裝與卸載類API

(1)根據bundleId來判斷該應用是否已經安裝框架

is_app_installed(String bundleId)編輯器

(2)安裝app,appPath爲應用的本地路徑ide

install_app(String appPath)

(3)卸載app.bundleId在android中表明的是包名,而在ios中有專門的bundleId號。

remove_app(String bundleId)

(4)關閉應用,其實就是按home鍵把應用置於後臺

close_app()

(5)啓動應用

launch_app()

(6)先closeApp而後在launchAPP

reset_app()

3.1.3 文件操做類API

(1)將字符數組用64位格式寫到遠程目錄的某個文件中。也能夠理解爲把本地文件push到設備上。

push_file(String remotePath, byte[] base64Data)

(2)將設備上的文件pull到本地硬盤上

pull_file(String remotePath)

(3)將設備上的文件夾pull到本地硬盤上,通常遠程文件爲/data/local/tmp下的文件。

pull_folder(String remotePath)

3.1.4 設置相關類API

(1)設置手機的網絡鏈接狀態,能夠開關藍牙、wifi、數據流量。經過NetworkConnectionSetting中的屬性來設置各個網絡鏈接的狀態。

set_network_connect(NetworkConnectionSetting connection)

(2)獲得當前網絡的狀態

get_network_connection()

3.1.5 用戶操做類API

(1)ios隱藏鍵盤

hide_keyboard()

(2)隱藏鍵盤,只能用於ios上。

hide_keyboard(String strategy, String keyName)

(3)按下某個鍵,具體哪一個鍵由key值決定,key值定義在AndroidKeyCode類中

send_key_event(int key)

(4)執行一個touch動做,該touch動做是由TouchAction封裝的。

perform_touchAction(TouchAction touchAction)

(5)點擊element控件中心點按下,duration*5毫秒秒後鬆開,如此重複fingers次。

tap(int fingers, WebElement element, int duration)

(6)點擊(x,y)點按下,duration*5毫秒後鬆開,如此重複fingers次。

tap(int fingers, int x, int y, int duration)

(7)從(startx,starty)滑到(endx,endy),分duration步滑,每一步用時是5毫秒。

swipe(int startx, int starty, int endx, int endy, int duration)

(8)2個手指操做控件,從對角線向中心點滑動。

pinch(WebElement el)

(9)以(x,y)爲基準,計算得出(x,y-100),(x,y+100)兩個點,而後2個手指按住這兩個點同時滑到(x,y)

pinch(int x, int y)

(10)與pinch(el)的動做恰好相反。兩個手指由控件的中心點慢慢向控件的左頂點後右底點滑動。

zoom(WebElement el)

(11)和pinch(x,y)相反。兩個手指從(x,y)點開始向(x,y-100)和(x,y+100)滑動。

zoom(int x, int y)

(12)鎖屏多少秒後解鎖

lock_screen(int seconds)

(13)模擬搖晃手機

shake()

(14)滾動到某個text屬性爲指定的字符串的控件

scroll_to(String text)

(15)滾動到某個text屬性包含傳入的字符串的控件

scroll_to_exact(String text)

(16)設置上下文

context(String name)

(17)可用上下文

get_context_handles()

(18)當前上下文

get_context()

(19)設置屏幕橫屏或者豎屏

rotate(ScreenOrientation orientation)

(20)獲取當前屏幕的方向

get_orientation()

3.1.6 獲取控件類API

(1)利用ios中的uiautomation中的屬性來獲取控件

find_element_by_ios_uiautomation(String using)

(2)和上面同樣,不過得到的是多個控件

find_elements_by_ios_uiautomation(String using)

(3)利用android的uiautoamtor中的屬性來獲取單個控件。

find_element_by_android_uiautomator(String using)

(4)和上面同樣,可是該方法得到是多個控件

find_elements_by_android_uiautomator(String using)

(5)利用accessibility id來獲取單個控件

find_element_by_accessibilityid(String using)

(6)利用accessibility id來得到多個控件

find_elements_by_accessibilityid(String using)

3.1.7 AppiumDriver的輔助類

主要針對手勢操做,好比滑動、長按、拖動等。TouchAction的原理是講一系列的動做放在一個鏈條中,而後將該鏈條傳遞給服務器。服務器接受到該鏈條後,解析各個動做,逐個執行。

TouchAction()

(1)在控件上執行press操做

press(WebElement el)

(2)在座標爲(x,y)的點執行press操做

press(int x, int y)

(3)在控件el的左上角的x座標偏移x單位,y左邊偏移y單位的座標上執行press操做。

press(WebElement el, int x, int y)

(4)釋放操做,表明該系列動做的一個結束標誌。

release() 

(5)以el爲目標,從另外一個點移動到該目標上

move_to(WebElement el)

(6)以(x,y)點爲目標,從另外一個點移動到該目標上

move_to(WebElement el, int x, int y)

(7) 在控件的中心點上敲擊一下

tap(WebElement el)

(8)在(x,y)點輕擊一下

tap(int x, int y)

(9)以控件el的左上角爲基準,x軸向右移動x單位,y軸向下移動y單位。在該點上輕擊。

tap(WebElement el, int x, int y)

(10)表明一個空操做,等待一段時間

wait_action()

(11)等待ms秒

wait_action(int ms)

(12)控件長按

long_press(WebElement el)

(13)點長按

long_press(int x, int y)

(14)偏移點長按

long_press(WebElement el, int x, int y) 

(15)取消執行該動做

cancel()

3.2 關於API的一些說明

   Appium是一個龐大的測試框架,固然其對應的API也是不少的,我沒有找到詳細的介紹文檔。就從網上找了一篇文檔,經常使用的API都說起到了,不過也不可能面面俱到,當咱們寫自動化測試用例的時候,都要想一下有沒有能解決你問題的函數?而後能夠去Appium下查找,這樣才能更好地解決你遇到的問題。

   舉個例子,當咱們對某個功能進行測試的時候,首先要對其進行操做,這個時候就要考慮到相應的點擊函數,輸入操做函數都有哪兒些兒?驗證結果的時候,咱們要檢測操做產生的結果是否是與咱們預期的一致?那這就要去考慮相應的Assert函數了。要有發散思惟的精神,不能侷限於程序自己。

3.3 本章小結

   在本章咱們介紹了Appium經常使用的一些兒API函數,雖然不能面面俱到,你們看了一下也許不能所有會用,但也要有個印象。等你在編寫測試用例的過程當中,若是遇到了相關的操做,能有個印象,而後利用編輯器的聯想功能就能夠查找到相應的API函數了。在後面的教程中,咱們會陸續進行展開,使你能夠着手對任何一個App編寫對應的自動化測試用例。

相關文章
相關標籤/搜索