显示时使用XPath排除不可见元素:none;是在CSS类中设置的



我需要从XPath中排除元素,其中display: none;在CSS类中设置。当给定元素有一个CSS类,其中设置了display: none;时,这里建议的解决方案将不起作用。

在我的具体示例中,该元素有一个名为error result的类,CSS设置为:

.error-result {
display: none;
}

这是我尝试过的XPath:

.//*[contains(text(),'XXXXXX')][not(ancestor::div[contains(@style,'display: none')])][not(descendant::div[contains(@style,'display: none')])]

问题是,Selenium仍然识别不需要的元素,因为显示:none;仅在CSS类中设置。

如何排除这些元素?

我在Java中使用Selenium WebDriver

感谢

Xpath针对页面源作用域执行。只有当您能够在页面源文本(driver.getPageSource()的结果值(中的元素的样式属性中找到显示属性时,它才会起作用

不幸的是,在许多情况下,css样式并没有被页面源代码所反映,因此您应该执行其他驱动程序命令,如element.getCssValue('displayed')。(但为了检查可见性,我建议使用isDisplayed()(。

这意味着,您应该通过元素列表进行迭代,并通过某些条件获得子列表,这会增加驱动程序请求量,但这是解决此问题的唯一方法。

相关内容

  • 没有找到相关文章

最新更新