无法在Android上找到XPath

时间:2016-03-22 02:12:47

标签: android selenium xpath appium

使用AppiumUIAutomatoViewer和Android 5.1

请帮助我找到元素的XPath。我需要从DVR Boxes(起居室,本例中的 DVR 1 )获取文本。我尝试了不同的组合,但仍然没有运气。

我无法使用resource-id,因为RelativeLayout[0]RelativeLayout[1]相同。我也无法使用文本搜索页面,因为文本是动态的(DVR框会改变)。我认为唯一的解决方案是XPath

以下是我的所作所为:

  1. AndroidElement d = (AndroidElement)
    driver.findElementByXPath("//android.widget.RelativeLayout[0]/android.widget.RelativeLayout[0]/android.widget.TextView[0]");                      
    
  2. AndroidElement d = (AndroidElement)
    driver.findElementByXPath("//android.widget.RelativeLayout[@index='0']");
    System.out.println(d.getText());               
    
  3. AndroidElement d = (AndroidElement) 
    driver.findElementByXPath("//RelativeLayout[0]/TextView[0]");
    
  4. 但到目前为止我的解决方案并非如此

    enter image description here

1 个答案:

答案 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.R‌​elativeLayout[1]/android.widget.TextView[1]