Appium findElement在一行中使用两次不起作用

Cha*_*man 10 java selenium xpath selenium-webdriver appium

我试图通过其完整路径(wholeElement)找到一个元素,并首先找到更高级别的元素,然后在该元素中找到更低级别的元素(modularElement).这是我的代码:

    WebElement modularElement = appDriver.findElement(By.xpath("//UIATableCell[2]")).findElement(By.xpath("//UIAStaticText[4]"));
    WebElement wholeElement = appDriver.findElement(By.xpath("//UIATableCell[2]/UIAStaticText[4]"));

    Logger.LogMessage("modularElement attribute1: " + modularElement.getLocation(), Priority.High);
    Logger.LogMessage("wholeElement attribute1: " + wholeElement.getLocation(), Priority.High);
Run Code Online (Sandbox Code Playgroud)

我遇到的真正奇怪的问题是两个元素(模块化和整体)是不同的元素而不是相同的元素(由上面代码中打印的不同位置显示).任何人都可以解释为什么会这样吗?

谢谢.

更新:

我也尝试使用.//但是仍然提供相同的问题:

    WebElement modularElement = appDriver.findElement(By.xpath("//UIATableCell[2]")).findElement(By.xpath(".//UIAStaticText[4]"));
Run Code Online (Sandbox Code Playgroud)

ale*_*cxe 8

他们不一样.

appDriver.findElement(By.xpath("//UIATableCell[2]")).findElement(By.xpath("//UIAStaticText[4]"));
Run Code Online (Sandbox Code Playgroud)

在这里,您要搜索整个DOM树中任何//UIAStaticText[4]位置的任何位置:

使用xpath时请注意webdriver遵循标准约定:以"//"为前缀的搜索将搜索整个文档,而不仅仅是当前节点的子节点.使用".//"将搜索范围限制为此WebElement的子项.

尽管//UIATableCell[2]/UIAStaticText[4]将搜索的直接孩子中//UIATableCell[2]唯一.