appium入門知識

來源:互聯網
上載者:User

標籤:

UI自動化相關工具

1、appium平台

2、Apple的UIAutomation

3、Google的UIAutomation

簡單的介紹一下這幾個工具:

1、Appium簡介

Appium使用WebDriver的json wire協議,來驅動Apple系統的UIAutomation庫、Android系統的UIAutomator架構。

Appium在不同平台中使用了標準的自動化APIs,所以在跨平台時,不需要重新編譯或者修改自己的應用。

Appium支援的語言比較多,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl語言等。

 

2、Apple的UIAutomation

Apple家的UIAutomation是 Xcode內建的測試架構,在Instruments中可運行,可直接錄製指令碼和直接運行。

只使用Apple的UIAutomation,我們只能用javascript來編寫測試案例,而且只能用Instruction來運行測試案例。

3、Google的UIAutomation

Google的UIAutomation是Google內建的UI自動化測試載入器。

只使用Google的UIAutomation,我們就只能用java來編寫測試案例。

Appium介紹

Appium 的核心是一個 網頁伺服器,它提供了一套 REST 的介面。它收到用戶端的串連,監聽到命令,接著在行動裝置上執行這些命令,然後將執行結果放在 HTTP響應中返還給用戶端。

環境搭建

我用了比較簡單的指令碼Python去完成appium指令碼編寫,下面就講一下用Python完成UI自動化,環境搭建如下:

1、安裝Appium

2、安裝Appium python用戶端

其他環境要求

1. IOS

  Mac OS X 10.7 or higher, 建議10.9.2

  XCode >= 4.6.3, 建議5.1.1

  Apple Developer Tools

2. Android

  Android SDK API >= 17 (建議18/19)

如何調用Python代碼

1、開啟appium

開啟appium對應的安裝路徑,比如:C:\Program Files (x86)\Appium\node_modules\.bin

在該路徑下,運行:appium 即可啟動,appium預設是自動安裝APK的

如果需要不安裝的話,加個參數即可,啟動命令如下:appium --no-reset

2、調用Python指令碼

先將路徑定位到寫好的Python指令碼main.py的路徑

然後運行命令:

python -m unittest  main

Python指令碼簡介

Desired Capabilities

Desired capabilities 是一些索引值對的集合 (比如,一個 map 或者 hash),用戶端將這些索引值對發給服務端,告訴服務端我們想要怎麼測試。比如,我們可以把platformName capability 設定為 iOS,告訴 Appium 服務端,我們想要一個iOS 的 session,而不是一個 Android 的。

desired_capabilities.py

編寫Python指令碼時,需建立2個檔案:desired_capabilities.py和main.py

desired_capabilities.py主要是建立get_desired_capabilities()

一、get_desired_capabilities()

擷取本次會話的參數。這裡主要設定了8個參數。使用者可以根據自己的需求進行調整。

     1. platformName,我們測試的目標機器。

     2. platformVersion,測試目標裝置的系統版本。

     3. deviceName,測試機器的名稱(裝置名稱即可)。

     4. appPackage,被測應用的包名(只有Android測試才用)。

     5. appWaitPackage,測試時會等待(只有Android測試才用)。

     6. app,被測應用檔案的所在位置

     7. newCommandTimeout,兩條指令的最長時間間隔。如果超過這個間隔,Appium Server將會終止本次會話。

     8. automationName,本次會話所使用的自動化引擎。Android 4.2以下系統請使用Selendroid;IOS、Android 4.2以上(含)請使用Appium。

 

二、main.py

就是UI的功能性指令碼。

常用方法整理

1、  尋找控制項方法

1)     ID : 通過resource-id尋找。注意,測試Android應用時,Appium引擎和Selendroid引擎的id寫法不同,Appium下類似這樣:com.alibaba.mts.mtsdemoapp:id/login_login_button;而Selendroid下id是:login_login_button。所以,如果要寫通用的指令碼,建議使用其他尋找方式。

2)     XPATH : 通過xpath尋找。例如尋找一個包含“Add note”字串的TextView控制項:driver.findElement(By.XPATH, "//android.widget.TextView[contains(@text,‘Add note‘)]")。

3)      LINK_TEXT : (不支援Android 4.2.1以下)通過控制項的文本文字尋找,比如:driver.findElement(By.LINK_TEXT, “登入”),找到控制項文字為“登入”控制項。注意,它不會匹配“登入吧”、“快登入”等文字。建議使用下面的“PARTIAL_LINK_TEXT”。

4)      PARTIAL_LINK_TEXT : (不支援Android 4.2.1以下)類似LINK_TEXT,但是可以匹配“登入吧”、“快登入”等文本的控制項。只要包含“登入”即可。

5)      TAG_NAME : 通過控制項類名尋找,比如EditText、Button等等。

6)      CLASS_NAME : 通過控制項全類名尋找,比如android.widget.EditText 、android.widget.Button等

這些控制項的屬性都可以用uiautomatorviewer這個工具查看,如所示:

 

2、  常用操作

1)     滑動螢幕,比如引導頁的滑動

driver.swipe(startx,starty,endx,endy,duration)

開始座標和結束座標,duration表示滑動時間,時間越長滑動越慢左右滑動的話,Y座標不變

2)     點擊按鈕

Driver.click()

3)     等待

Time.sleep(N)

N是等待的時間,以秒為單位

4)     鎖定螢幕

driver.lock(5)

5)     將APP置於後台

driver.background_app(5)

6)     收合鍵盤

driver.hide_keyboard()

7)     開啟通知欄

driver.open_notifications()

8)     檢查是否已安裝

driver.is_app_installed(‘com.example.android.apis‘)

9)     安裝應用到裝置中

driver.install_app(‘path/to/my.apk‘)

10)   從裝置中刪除應用

driver.remove_app(‘com.example.android.apis‘)

11)   類比裝置搖晃

driver.shake()

12)   關閉應用

driver.close_app()

13)   按鍵事件 (Key Event)

給裝置發送一個按鍵事件

driver.keyevent(176)

14)通過MQC檢查

可直接在代碼中輸入MQC內建的檢查指令。

self.driver.shell("log -p i -t MQC-LOG-MASTER screenshot")

appium入門知識

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.