あなたはむしろdeep
よりも、JavaScriptでshadowRoot
プロパティを使用する必要があります廃止されました:
JavascriptExecutor jsExecuter = (JavascriptExecutor)driver;
WebElement result = jsExecuter.executeScript('return arguments[0].shadowRoot', element)
result.click();
argument[0]
はあなたのケースでhtml
あるところ。
詳細:WebDriver
では、ドライバをエグゼキュータにキャストした後にjavascriptを実行するオプションがあります。 JavascriptExecutor
では、javascriptコードをページに直接実行します。セレンはshadowRoot
をサポートしていませんので、このキャスティングが必要です。ちょうどあなたが(#シャドウルート内の要素をクリックする)やりたいために
:
jsExecuter.executeScript("return document.querySelector('html').shadowRoot.querySelector('next-tab').querySelector('a').click()");
編集:あなたが必要とする「電子& Applicances」をクリックするために:
jsExecuter.executeScript("document.querySelector('next-app').shadowRoot.querySelector('next-app-header').shadowRoot.querySelector('app-header').querySelector('next-nav-bar').shadowRoot.querySelector('div.bar').querySelector('next-tabs > next-tab').click();");
これはどこに行くのでしょうか。 shadow-root
の下に要素(htmlタグ)が必要になるたびに、.shadowRoot
、次にquerySelector('cssSelector')
を使用して、必要な要素を取得する必要があります。そして、あなたは、この要素をクリックするか、またはそれなどに鍵を送信することができます...私は今、それはあなたの番です、この質問に多くの努力を入れている
;)
あなたは詳細に、より詳しく説明していただけますか?私は多くのJavaスクリプトにはありません。上記の例を使ってここにいくつかのコードを書くことができればうれしいです。ありがとう – keti
私はこのエラーを取得していますorg.openqa.selenium.WebDriverException:不明なエラー:nullの 'querySelector'プロパティを読み取ることができません------------------------ ----------------------------- JavascriptExecutor js =(JavascriptExecutor)ドライバ。 ---------------------------------------私は私のウェブサイトを提供することもできます。もっと掘り下げたい\t \t \t \t \t \t js.executeScript( "document.querySelector( 'HTML')を返すshadowRoot.querySelector( '次のタブ')querySelector( 'A'))(クリックしてください。。。"); – keti
はいリンクを追加してください。 – Moshisho