提问者:小点点

如何使用期望的条件. visibilityOfElement定位多次命中


我有一个包含多个上下文菜单的超文本标记语言站点。xpath: .//*[@id='TopIcon_Edit']/a/span。(此路径将命中多个元素)在我的测试中,其中一个上下文菜单是可见的。

我现在想验证一个上下文菜单是可见的,使用期望的条件. visibilityOfElementSitation(By.xpath(".//*[@id='TopIcon_Edit']/a/span"))。虽然我可以看到上下文菜单是可见的,但测试告诉我:"元素不满足由By.xpath定位的元素的条件可见性:…"

我假设方法visibilityOfElementSite(…)只是评估定位器找到的第一个元素的可见性,这是不可见的,正如Selenium正确地说。

我将不胜感激关于如何解决这个问题的任何提示。

向你问好格哈德·舒斯特


共2个答案

匿名用户

是的,当您使用Selenium搜索单个元素并且结果返回多个元素时,该方法会获取第一个元素并返回它。因此,您必须更精确地指定您使用的xpath,例如: ".//*[@id='TopIcon_Edit']/a[1]/span",或类似的,它将只指向所需的元素。

匿名用户

如果您可以取消xpath,这将有所帮助。FindElement(By. cssSelector("#TopIcon_Editspan")).click()或执行Web元素列表,我们=FindElements(By.cssSelector("#TopIcon_Editspan"));然后根据样式过滤您的列表。使用cssSelectors要容易得多,并且提供了更大的灵活性。