什么" wait.until(ExpectedConditions.elementToBeClickable(By.xpath()))"如果有多个具有相同xpath的元素?

时间:2015-10-20 22:05:58

标签: java selenium selenium-webdriver selenium-chromedriver

想象一下,我使用:

$ls | grep -v dont_delete1 | grep -v  dont_delete2 | xargs rm -rf 

获取一个web元素,但如果有多个元素具有相同的xpath但只有一个元素应该是可点击的(可见的)呢?它会带给我那个确切的网页元素吗?还是会因为那些不可见的而抛出异常?

1 个答案:

答案 0 :(得分:2)

如果您查看implementation of ExpectedConditions.elementToBeClickable,您会看到它通过mvn clean source:jar javadoc:jar verify install gpg:sign deploy获取其元素。反过来,此函数使用ExpectedConditions.visibilityOfElementLocated函数来获取其元素,然后调用findElementthe documentation for WebDriver.findElement表示它返回与选择器匹配的第一个元素。

因此,即使您有多个与传递给WebDriver.findElement的元素相匹配的元素,测试也只会考虑第一个元素。如果可以单击第一个元素,则将满足条件。如果无法单击第一个元素,则等待将超时。是否可以点击其他匹配元素无关紧要。您应该调整选择器以仅选择您感兴趣的元素。