2016-11-13 27 views
0

Google Chromeコンソールでは、これでシャドウルート要素をクリックできます。ポリマーウェブサイトとシャドウルートを持つSelenium WebDriver

document.querySelector('html /deep/ next-tab').querySelector('a').click() 

しかし、私はWebドライバのjavaコードで同じことをしませんでした。

ここに私のウェブドライバ& Javaコードがあります。

WebElement result = driver.findElement(By.cssSelector("html /deep/ next-tab")).findElement(By.cssSelector("html /deep/ a"); 

result.click(); 

誰でも私にこれを手伝ってもらえますか?非常に単純なことですが、何とか私はそれを理解できませんでした。

答えて

0

あなたはむしろ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')を使用して、必要な要素を取得する必要があります。そして、あなたは、この要素をクリックするか、またはそれなどに鍵を送信することができます...私は今、それはあなたの番です、この質問に多くの努力を入れている

;)

+0

あなたは詳細に、より詳しく説明していただけますか?私は多くのJavaスクリプトにはありません。上記の例を使ってここにいくつかのコードを書くことができればうれしいです。ありがとう – keti

+0

私はこのエラーを取得しています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

+0

はいリンクを追加してください。 – Moshisho