如何讓電腦自動化測試程式知道如何操作手機應用程式? (Locator)

如何讓電腦自動化測試程式知道如何操作手機應用程式?(Locator)

人對於手機的操作十分的熟練,靠兩根手指透過點擊、滑動、長按、放大、縮小等動作,就可以操作手機應用程式。

因此對於電腦來說手機自動化測試的挑戰有兩個。

  • 點擊到正確的位置(Locator),人有眼睛可以正確的判別圖示與位置,但是電腦怎麼辦找到正確的位置呢?
  • 模擬一些手指操作行為,例如點擊、滑動、長按、放大、縮小等動作。

這篇文章主要針對如何讓電腦可以找到正確的位置做進一步的說明。同樣我們會用 appium 與Andorid 為範例說明。

如何找到點擊位置(Locator)?

在 Windows/Android 平台上,主要我們要使用的工具是UIAutomatorViewer。

(如果是 Mac 可以使用Appium inspector)

這個工具其實是 Android SDK 的一部分,通常在

\android-sdk\tools\uiautomatorviewer.bat

測試情境 – 小算盤

我們用手機小算盤應用程式為例子,要如何可以正確的點到小算盤上面的數字?

1. 於電腦的Android 模擬器 (或是實體手機)啟動小算盤

2. 啟動 uiautomatorviewer.bat

3. 畫面上方有綠色手機的圖示,點下後就會開始分析該手機應用程式。結果如下圖所示:

4. 右下方有些關鍵的資訊。這些資訊就是電腦自動化測試程式用來定位 (locator)點擊使用。

 

Locate Elements by ID, Name…and..?

透過 uiautomatorviewer得到這些資訊之後,一般來說我們要定位一個點擊的位置可以透過下列方式

 

程式範例(紅色為 uiAutomatorViewer所對應的值)
resource-id WebElement digit_7=driver.findElement(By.id(“com.android.calculator2:id/digit7“));digit_7.click();
text WebElement digit_7=driver.findElement(By.name(“7“));digit_7.click();
class WebElement digit_7=driver.findElement(By.className(“android.widget.Button“));digit_7.click();

對於使用 className 來說,這個例外。因為所有的數字的 className 都是”android.widget.Button”所以要另外使用 findElements,利用陣列的方式點擊。

例如下面例子:

List<WebElement> digits=driver.findElements(By.className(“android.widget.Button“));
digits.get(1).click();

content-desc 這個例子,因為 “7”剛好沒有定義 content-desc。如果有的話可以用下列方式處理。WebElement plusSign=driver.findElementByAccessibilityId(“7“);或是使用

AndroidUIAutomatorWebElement equal=driver.findElementBy.AndroidUIAutomator(“newUiSelector().description(\”7\”)”);

 

 

Android UiSelector

另外可以參考 AndroidUIAutomator,因為這個函數提供許多不同的定位方法。

  • WebElement equal=driver.findElementByAndroidUIAutomator(“new UiSelector().resourceId(\”com.android.calculator2:id/equal\“)”;
  • WebElement equal=driver.findElementBy.AndroidUIAutomator(“newUiSelector().description(\”equals\”)”);

http://developer.android.com/reference/android/support/test/uiautomator/UiSelector.html

Leave a Reply

Your email address will not be published.