2016-10-27 110 views
3

我有一個元素的網頁,具有獨特的ID進行搜索時「SomeID」爲什麼我不能在硒找到ID爲元素的多個元素

當與方法「findElement單一元素搜索「它找到了這個元素。

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

當使用搜索多個元素的方法,我發現返回的0

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

數組我不明白爲什麼它沒有找到與「findElements元素」。

是否因爲每個容器的「id」應該是唯一的?

「findElements」是否適用於其他類型的搜索(xpath等)?

感謝

+0

在這種情況下,您的計數應爲1。您可以向我們提供代碼。 –

+0

id屬性應該是唯一的。如果您有多個需要標準功能或特性的元素,則應考慮創建一個類。 – tommyO

回答

1

定位器By.id總是會返回一個單一的元素,即使有不止一個。這可能是因爲W3C標準規定id必須是唯一的,但它不是由瀏覽器強制執行的。

要獲得所有與相同ID的元素,在id屬性使用By.cssSelector一個條件:

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

請注意,你可能面臨着一個時間問題。在這種情況下,使用服務員:

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