我有一个网页,其中一个元素具有唯一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等)?
由于
答案 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']")));