我试图通过其完整路径(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]
的直接子代中搜索。