Webページの自動化のためのJava Seleniumプロジェクトを使用しています。 Webページには、Selenium findElement
メソッドを使用して対話できない多値のシャドウルートDOM要素がたくさんあります。
Selenium Java Frameworkで実装できるのは上記以外の他のソリューションを知っている場合は、ソリューションを渡してください。前もって感謝します !。
JSexeCutorとCSSを使用してシャドウDOM要素を見つける手順:
Shadow Root要素の親要素を見つけます。
その要素のシャドウルートを取得します。
そのシャドウルートWebエレメント上のあなたの要素を見つける
例 :
<div id="example">
#shadow-root
<div id="root" part="root">
<div id="label" part="label">ShadowRootLabel</div>
</div>
</ptcs-label>
_
#影のルート要素を見つけるためのメソッド
public WebElement getShadowRootElement(WebElement element) {
WebElement ele = (WebElement) ((JavascriptExecutor)driver)
.executeScript("return arguments[0].shadowRoot", element);
return ele;
}
_
#ステップ1は、例えば基本要素を見つける:
WebElement root1 = driver.findElement(By.id("example"));
_
#ステップ2
//Get shadow root element
WebElement shadowRoot1 = getShadowRootElement(root1);
_
#ステップ3 - シャドウルートの中にあるCSSセレクタを使用して要素を見つける必要があります。XPathはここでは動作しません
//Here we will get Element inside Shadow Dom Element
WebElement shadowElement = shadowRoot3.findElement(By.cssSelector("div[id=label]"));
_