Xpath WebDriver选择具有::before的元素

Xpath WebDriver选择具有::before的元素,xpath,selenium-webdriver,css-selectors,pseudo-element,Xpath,Selenium Webdriver,Css Selectors,Pseudo Element,我有两个元素具有相同的属性,但在页面上一次显示一个(当一个显示时,另一个消失)。两者之间的唯一区别是显示的元素将具有“::before”选择器。是否可以使用xpath或css选择器根据元素的id以及是否具有::before来检索元素 我打赌我也会尝试上面的javascript解决方案 因为::after&:::before是一个伪元素,它允许您将内容从CSS插入到页面上(不需要在HTML中)。虽然最终结果实际上不在DOM中,但它在页面上的显示方式似乎是这样的—您可以看到它,但无法使用xpath(

我有两个元素具有相同的属性,但在页面上一次显示一个(当一个显示时,另一个消失)。两者之间的唯一区别是显示的元素将具有“::before”选择器。是否可以使用xpath或css选择器根据元素的id以及是否具有::before来检索元素


我打赌我也会尝试上面的javascript解决方案

因为::after&:::before是一个伪元素,它允许您将内容从CSS插入到页面上(不需要在HTML中)。虽然最终结果实际上不在DOM中,但它在页面上的显示方式似乎是这样的—您可以看到它,但无法使用xpath(例如())真正找到它


如果可能的话,我还可以建议使用不同的id,或者如果它们在DOM中的不同位置,则使用上面/下面的元素创建更复杂的xpath,并查看是否显示它。

元素没有id。为什么不使用classname选择它呢?因为这两个元素具有相同的classname在CSS中如何区分它们,要将
:before
伪元素应用于正确的元素,请参阅此答案-可能重复的
String script = "return window.getComputedStyle(document.querySelector('.analyzer_search_inner.tooltipstered'),':after').getPropertyValue('content')";
                        Thread.sleep(3000);
                        JavascriptExecutor js = (JavascriptExecutor) driver;
                        String content = (String) js.executeScript(script);
                        System.out.println(content);