我正在使用带有 Java 和 Selenium WebDriver 的 xpath 从网页上的 XML 树中选择一个节点。我需要选择一个带有class =“red-button”的超链接的节点,并且是一个带有class =“step”的div元素的后代(不是直接子元素)。这是我的代码:
List<WebElement> goButton = driver.findElements(By.xpath("/div[@class=\"step\"]/a[@class=\"red-button\"]"));
if(goButton.get(0)!= null){
continueButton.get(0).click();
}
我需要等待红色按钮元素出现,因为它是动态加载的。这就是我选择使用 findElements() 方法而不是 findElement() 的原因。我的理解是 findElements() 池化 DOM,直到找到元素或超时。当我运行我的代码时,我得到:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
这意味着 goButton 为空,因此 WebDriver 找不到该元素。我在我的 Java 逻辑中做错了什么还是我需要修复 xpath 查询?