2013-01-25 12 views
1

我有一個包含多個上下文菜單的HTML網站。 xpath是:.//*[@id='TopIcon_Edit']/a/span。 (這條路會碰到幾個元素) 在我的測試中,可以看到上下文菜單中的一個。如何使用ExpectedConditions.visibilityOfElementLocated進行多次匹配

我現在想驗證一個上下文菜單是可見的,使用 ExpectedConditions.visibilityOfElementLocated(By.xpath(「.//* [@id ='TopIcon_Edit']/a/span」))。 雖然我可以看到上下文菜單中是可見的,測試告訴我: 「元素不符合位於由By.xpath元素的條件可視性:......」

我假設方法visibilityOfElementLocated(.. 。)只是評估它找到的第一個元素的可見性,這是​​Selenium正確的。

我將不勝感激關於如何解決這個問題的任何提示。

隨着親切的問候, 格哈德·舒斯特

+0

分享HTML代碼。 – Manigandan

回答

0

是的,當你搜索一個元素硒和結果返回多個元素,該方法將第一個元素並將其返回。 因此,您必須更精確地指定您使用的xpath,例如:「.//*[@id='TopIcon_Edit']/a[1]/span」,或類似的,只會指向所需的元素。

0

如果你可以取消xpath,這將有所幫助。 FindElement(By.cssSelector(「#TopIcon_Edit span」))。click()或做一個web元素列表we = FindElements(By.cssSelector(「#TopIcon_Edit span」));然後根據樣式篩選列表。它更容易,並提供更大的靈活性來使用cssSelectors。