使用Appium
,UIAutomatoViewer
和Android 5.1
请帮助我找到元素的XPath。我需要从DVR Boxes(起居室,本例中的 DVR 1 )获取文本。我尝试了不同的组合,但仍然没有运气。
我无法使用resource-id
,因为RelativeLayout[0]
和RelativeLayout[1]
相同。我也无法使用文本搜索页面,因为文本是动态的(DVR框会改变)。我认为唯一的解决方案是XPath
以下是我的所作所为:
AndroidElement d = (AndroidElement)
driver.findElementByXPath("//android.widget.RelativeLayout[0]/android.widget.RelativeLayout[0]/android.widget.TextView[0]");
AndroidElement d = (AndroidElement)
driver.findElementByXPath("//android.widget.RelativeLayout[@index='0']");
System.out.println(d.getText());
AndroidElement d = (AndroidElement)
driver.findElementByXPath("//RelativeLayout[0]/TextView[0]");
但到目前为止我的解决方案并非如此
答案 0 :(得分:0)
我无法使用" resource-id"因为对于RelativeLayout [0]和 RelativeLayout1他们一样
您仍然可以使用resource-ids
创建List<WebElement>
并使用索引访问元素。在你的情况下像这样:
List<WebElement> dvrList = driver.findElementsById("<id of the list element"); //creates a list of elements with same id
String text = dvrList.get(1).getText(); //this gives you text of 2nd element on list (base index 0)
我认为唯一的解决方案是XPath
除非Xpath正确,否则您访问该元素的方式似乎没有问题
WebElement dvrItem = driver.findElementByXPath("//android.widget.ListView[0]/android.widget.RelativeLayout[0]/android.widget.RelativeLayout[0]/android.widget.TextView[0]");
String text = dvrItem.getText();
修改: -
Correct XPath = //android.widget.RelativeLayout[1]/android.widget.RelativeLayout[1]/android.widget.TextView[1]