为什么我在Selenium中找不到搜索多个元素时的id元素

时间:2016-10-27 14:46:32

标签: java html selenium

我有一个网页,其中一个元素具有唯一ID" SomeID"

使用方法" findElement"搜索单个元素时它找到了元素。

WebElement element = webDriver.findElement(By.id(SomeID))

当使用该方法搜索多个元素时,我将返回一个0

的数组
List<WebElement> elements = webDriver.findElements(By.id(SomeID));

我不明白为什么它找不到带有&#34; findElements&#34;的元素。

是因为&#34; id&#34;每个容器应该是唯一的吗?

将&#34; findElements&#34;从事其他类型的搜索(xpath等)?

由于

1 个答案:

答案 0 :(得分:1)

定位器By.id将始终返回单个元素,即使有多个元素也是如此。这可能是因为W3C标准规定id必须是唯一的,但浏览器不强制执行。

要获取具有相同ID的所有元素,请在By.cssSelector属性上使用id条件:

List<WebElement> elements = webDriver.findElements(By.cssSelector("[id='some-id']"));

请注意,您可能面临时间问题。在这种情况下,请使用服务员:

List<WebElement> elements = WebDriverWait(driver, 10)
  .until(EC.presenceOfAllElementsLocatedBy(By.cssSelector("[id='some-id']")));