私はCSS属性「コンテンツ」の値を取得しようとしています:
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: "-";
}
「コンテンツ」の値を取得する方法はありますか?
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が擬似要素を受け入れた場合に機能しますが、受け入れません。
この問題を回避するには、追加の偽の要素::after
および::before
を生成するChromiumを使用するか、 https://stackoverflow.com/a/28265738/449288 。
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コマンドまたは使用したい場所でこのコンテンツ文字列を使用します。これがうまくいくことを願っています...頑張ってください