2016-11-30 98 views
1

我试图得到一个CSS属性“内容”与价值之后:提取内容:使用XPath

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: "-"; 
} 

不知道如何获得的 “内容” 的价值?

+0

看到这篇文章https://davidwalsh.name/pseudo-element –

+0

尝试'//我[@ class ='tree-branch-head'] :: –

+0

@Nikhil,我不熟悉使用javascript在一个硒项目里面。你能给我一个指针/例子吗? –

回答

3

您正在使用By.xpathi[@class='tree-branch-head']::after是不是一个有效的XPath,它是XPath符号(i[@class='tree-branch-head'])和CSS(:after)的混合物。

您应该使用By.cssSelector和一个有效的CSS选择器,例如i.tree-branch-head:after。如果Selenium接受了伪元素,那么这将起作用,但它不会。

要解决此问题,您可以使用Chromium,该Chromium会生成额外的假元素::after::before,或使用https://stackoverflow.com/a/28265738/449288中描述的Javascript提取器。

+0

谢谢Gieole,你的'i.tree-branch-head:'帮助我走上了正确的轨道。这是retreiving'content'值的字符串值。 ('content.txt');';';';');';';';';';';';'; –