在 :after 使用 XPath 中提取内容
Extracting content in :after using XPath
我正在尝试获取 CSS 属性 "content" 的值:
WebElement plusOrMinusSign = currentEntityTypeLevel1.findElement(
By.xpath("i[@class='tree-branch-head']::after"));
System.out.println(plusOrMinusSign.getCssValue("content"));
但是,我得到一个错误:The string 'i[@class='tree-branch-head']::after' is not a valid XPath expression.
似乎无法识别“::after
”。
Html:
<i class="tree-branch-head" ng-class="iBranchClass()" ng-click="selectNodeHead(node)">::after
</i>
Css:
i:after {
content: "-";
}
知道如何获取 "content" 的值吗?
您正在使用 By.xpath
,但 i[@class='tree-branch-head']::after
不是有效的 XPath,它是 XPath 表示法 (i[@class='tree-branch-head']
) 和 CSS (:after
).
您应该使用 By.cssSelector
和一个有效的 CSS 选择器,例如 i.tree-branch-head:after
。如果 Selenium 接受伪元素,这将起作用,但它不接受。
要解决此问题,您可以使用 Chromium,它会生成额外的假元素 ::after
和 ::before
,或者使用 Javascript 提取器,如 .
处理 selenium webdriver 中的伪元素
String script = "return window.getComputedStyle(document.querySelector('Enter root class name here '),':after').getPropertyValue('content')";
Thread.sleep(3000);
JavascriptExecutor js = (JavascriptExecutor) driver;
String content = (String) js.executeScript(script);
System.out.println(content);
现在在您的 assert 命令或任何您想使用的地方使用此内容字符串,希望这对您有用...祝您好运
我正在尝试获取 CSS 属性 "content" 的值:
WebElement plusOrMinusSign = currentEntityTypeLevel1.findElement(
By.xpath("i[@class='tree-branch-head']::after"));
System.out.println(plusOrMinusSign.getCssValue("content"));
但是,我得到一个错误:The string 'i[@class='tree-branch-head']::after' is not a valid XPath expression.
似乎无法识别“::after
”。
Html:
<i class="tree-branch-head" ng-class="iBranchClass()" ng-click="selectNodeHead(node)">::after
</i>
Css:
i:after {
content: "-";
}
知道如何获取 "content" 的值吗?
您正在使用 By.xpath
,但 i[@class='tree-branch-head']::after
不是有效的 XPath,它是 XPath 表示法 (i[@class='tree-branch-head']
) 和 CSS (:after
).
您应该使用 By.cssSelector
和一个有效的 CSS 选择器,例如 i.tree-branch-head:after
。如果 Selenium 接受伪元素,这将起作用,但它不接受。
要解决此问题,您可以使用 Chromium,它会生成额外的假元素 ::after
和 ::before
,或者使用 Javascript 提取器,如 .
处理 selenium webdriver 中的伪元素
String script = "return window.getComputedStyle(document.querySelector('Enter root class name here '),':after').getPropertyValue('content')";
Thread.sleep(3000);
JavascriptExecutor js = (JavascriptExecutor) driver;
String content = (String) js.executeScript(script);
System.out.println(content);
现在在您的 assert 命令或任何您想使用的地方使用此内容字符串,希望这对您有用...祝您好运