APP 自動化之appium元素定位(三)


 APP自動化測試關鍵環節--元素定位,以下我們來了解appium提供的元素定位方法!

1. id定位,id一個控件的唯一標識,由開發人員在項目中指定,如果一個元素有對應的resource-id,我們就可以采用這種方式來實現元素定位操作,但是實際開發中,也有可能app項目的開發人員不是很嚴謹,一個頁面有很多個相同的id,獲取到的元素結果是一個集合,所以這種情況我們需要用list進行接收

//找到想要定位的元素並進行點擊
androidDriver.findElement(By.id("id")).click();

2. text 定位,java-client舊版本提供了相應的API支持

//根據text屬性進行定位
androidDriver.findElement(By.name("登錄"));

注意:java-client新版本運行之后會發現定位失敗,這是因為java-client 5.0 以后新版本不支持這個API:

Exception in thread "main" org.openqa.selenium.InvalidSelectorException: Locator Strategy 'name' is not supported for this session (WARNING: The server did not provide any stacktrace information)

解決方案:

androidDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"登錄\")");

注意提示:

因為:

解決辦法:Configure Build Path jdk1.8 

配置后:

3. className 定位。根據class類查找元素,一般得到的是多個元素(除非className唯一),如果得到多個,我們需要用一個List集合接收返回值

//根據className屬性進行定位
List<WebElement> listElement = androidDriver.findElements(By.className(("className")));
listElement.get(1).click();

4. xpath 定位

//根據xpath屬性進行定位
androidDriver.findElement(By.xpath("//android.widget.Button[@text='登錄']")).click();
androidDriver.findElement(By.xpath("//android.widget.Button[@text=\"登錄\"]")).click();

5. accessibility id 元素定位 

//根據AccessibilityId進行定位
androidDriver.findElementByAccessibilityId("登錄").click();

6. 坐標定位:通過開發者選項>>指針位置或者是UIAutomatorView獲取到的位置(絕對坐標)

//坐標定位
//通過TouchAction類完成坐標點擊
TouchAction touchAction = new TouchAction<>(androidDriver);
//將(x,y)坐標封裝成PointOption對象傳入tap方法調用
PointOption pointOption =PointOption.point(500, 500);
//通過調用tap方法進行點擊.調用perform()方法執行點擊
touchAction.tap(pointOption).perform();

7. UIAutomator 定位,安卓的UIAutomator是一個強有力的元素定位方式,它是通過Android提供的原生的UIAutomator框架去找元素,且支持元素全部屬性定位,appium提供的定位元素API其實都是UIAutomator提供的API,appium元素定位方式如下:

//通過UIAutomator 的description 方法找到屬性是 content-desc 的元素
androidDriver.findElementByAndroidUIAutomator("new UiSelector().description(\"登錄\")").click();
//通過UIAutomator的text 方法找到屬性是text的元素
androidDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"登錄\")").click();
//通過UIAutomator的 resourceId方法找到屬性是 resourceID的元素
androidDriver.findElementByAndroidUIAutomator("new UiSelectot().resourceId(\"resource-id\")").click();

 8.未完待續.......


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM