我试图通过其完整路径(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);

我遇到的一个真正奇怪的问题是两个元素(模块化和整体)是不同的元素,而不是一个(通过上面代码中打印的不同位置显示)。谁能解释为什么会这样?

谢谢。

更新:

我也尝试过使用.//,但这仍然提供了相同的问题:
    WebElement modularElement = appDriver.findElement(By.xpath("//UIATableCell[2]")).findElement(By.xpath(".//UIAStaticText[4]"));

最佳答案

它们不一样。

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

在这里,您可以在任何地方at any level in the entire DOM tree搜索//UIAStaticText[4]:



虽然//UIATableCell[2]/UIAStaticText[4]仅在//UIATableCell[2]的直接子代中搜索。

09-04 08:04