在我的 Java Selenium 自动化项目中,我必须了解一些网页元素是否包含伪元素。
我已经看到了 this 个问题,但那里的答案根本不起作用。
This 看起来更好,但是在我的情况下,我已经有了一个 web 元素,我需要获取它的内容,而在该答案中,JavaScript 会收到一个定位器。
我绝对不熟悉 JavaScript 这就是我问的原因:
因此,给定一个 Selenium WebElement 元素。我怎么知道这个元素是否包含伪元素?
在 screenshot 上有一个带有红点的元素 - ::after
伪元素,而其他元素没有这样的红点。
这是我从开发工具中获得的内容,作为包含 after
伪元素的元素的外层HTML。我什至在那里看不到它,它只是类似于那里不包含伪元素的其他元素。
<div workspaceid="49426bdc-59fe-44ec-82ea-8f567407c04f" data-test-id="9B1qjz0kWcfO" class="list-item ListItem__ListItemComponent-bsdtqz-0 dgogUS RoleItem-sc-1n184cw-0 jyfJwu role-item"><p class="text-component Texts__GenericText-sc-1dju4ks-0 czkGYX name p">9B1qjz0kWcfO </p></div>
答案 0 :(得分:1)
您可以使用 WebElement
作为参数而不是 JavascriptExecutor 中的定位符。使用 getComputedStyle,您可以获得 pseudo-element
的所有 css 属性。在devtools中查看css,找到red dot css属性即可查看。
JavascriptExecutor jsExecutor = (JavascriptExecutor) driver;
// JavaScript to get any css property include pseudo-element.
// Arguments is an array of parameters passed to the executeScript method (standart Selenium functionality)
String js = "return window.getComputedStyle(arguments[0], arguments[1]).getPropertyValue(arguments[2]);";
// Use WebElement instead of locator.
// Property "content" is an example of property, you should check css and get the red dot
String cssProperty = (String) jsExecutor.executeScript(js, element, ":after", "content");
// Check for the red dot css property