【发布时间】:2014-09-20 21:53:11
【问题描述】:
我正在 Android 设备上编写 Appium 测试。我用 Selenium WebDriver 做了很多工作,我希望有类似的体验。然而,XPath 让我头疼。这是组件层次结构:
android.widget.GridView
--android.widget.RelativeLayout
------android.widget.RelativeLayout
------android.widget.RelativeLayout
----------android.widget.TextView <- text here is "Test1", resourceId=qa.com.text:id/bookTitle
--android.widget.RelativeLayout
------android.widget.RelativeLayout
------android.widget.RelativeLayout
----------android.widget.TextView <- text here is "Test2", resourceId=qa.com.text:id/bookTitle
--android.widget.RelativeLayout
------android.widget.RelativeLayout
------android.widget.RelativeLayout
----------android.widget.TextView <- text here is "Test3", resourceId=qa.com.text:id/bookTitle
--android.widget.RelativeLayout
------android.widget.RelativeLayout
------android.widget.RelativeLayout
----------android.widget.TextView <- text here is "Test4", resourceId=qa.com.text:id/bookTitle
我希望有一个方法可以返回 GridView 的 4 个子元素。这是我的代码:
public List<WebElement> getElementsFromGrid() {
return driver.findElementsByXPath("//android.widget.GridView/android.widget.RelativeLayout");
}
测试:
for (final WebElement s : kno.getBooksInCourse()) {
final MobileElement m = (MobileElement) s;
System.err.println(m.findElementByAndroidUIAutomator("resourceId(\"qa.com.text:id/bookTitle\")").getText());
}
预计我会看到:Test1、Test2、Test3、Test4,但我得到的是:Test1、Test1、Test2、Test4。我究竟做错了什么?我可以使用其他查找方法吗?使用类名对我没有帮助,因为它给了我所有的 RelativeLayout 元素,而不仅仅是层次结构中的下一个。我会使用 UISelector,但我不知道如何使用。
使用 Appium 1.2 和 Appium Java 客户端 1.5
【问题讨论】:
标签: android mobile xpath automation appium