2016-06-27 3 views
1

アクセス影DOM要素(ポリマー)Chromeブラウザ(V51)のJSコンソールに次のコードを使用して<a href="https://shop.polymer-project.org/" rel="nofollow">https://shop.polymer-project.org/</a>で、メンズアウターウェアセクションの下にある「今すぐお店」ボタンにアクセスしようとすると

document.querySelector('shop-app').shadowRoot.querySelector('shop-home').shadowRoot.querySelector('shop-button'); 

私はセレンを使用して、私の自動化テストで同じ要素にアクセスしようとした、 行1:WebElement shopBtn = (WebElement)((JavascriptExecutor)driver).executeScript("return document.querySelector('shop-app').shadowRoot.querySelector('shop-home').shadowRoot.querySelector('shop-button')");

ライン2:shopBtn.click();

このコードは、エラーを与える:

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Cannot read property 'querySelector' of null 
    (Session info: chrome=51.0.2704.106) 
    (Driver info: chromedriver=2.20.353124 (035346203162d32c80f1dce587c8154a1efa0c3b),platform=Mac OS X 10.11.3 x86_64). 

この点に関するお手伝いがあります。

+0

[Polymer's DOM api](https://www.pol ymer-project.org/1.0/docs/devguide/local-dom#dom-api) – Alan

+0

ネイティブにサポートしているブラウザー(Chrome)で陰影DOM(デフォルト)またはシャドウDOMを使用していますか? –

+0

私はChromeを基本的にShadow DOMとしてサポートしています.Polyfillsのため、Firefoxブラウザでは非常に簡単に動作しますが、Chromeでは動作しませんが、同じコードがChromeブラウザのJSコンソールでうまく動作します。 – user564769

答えて

1

あなたは指定していませんが、Javaを使用しているようです。ここにいくつかのコードがあります。 JSEは必須ではありません。

WebDriver driver = new FirefoxDriver(); 
String searchText = "Men's Outerwear"; 
driver.get("https://shop.polymer-project.org/"); 
WebDriverWait wait = new WebDriverWait(driver, 5); 
List<WebElement> sections = wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.cssSelector("div.item"))); 
for (WebElement section : sections) 
{ 
    if (section.getText().toLowerCase().contains(searchText.toLowerCase())) 
    { 
     section.findElement(By.linkText("SHOP NOW")).click(); 
     break; 
    } 
} 
+0

PolyFillsのためFirefoxブラウザで動作しますが、言及するのを忘れていました:(ただし、ShadowDomのネイティブサポートを持つChromeブラウザでは動作しません。 – user564769

+0

上記のコードはChromeで動作しないと言いますか? – JeffC

+0

正しいのはFirefoxのみで、Chromeでは動作しません – user564769

-1

私はこのクリックを実行するためにtriyingていると私はそれがFirefoxを使用して、私はセレン3.

を使用しています

.//shop-button/a[starts-with(@aria-label, 'Men') and contains(@aria-label, 'Outerwear Shop Now')] 

のXPathロケータを使用して、私はわからない、私はそれを行うことができました正しいアプローチを使用しています

乾杯お待ちください

+0

Stack Overflowへようこそ!別の質問がある場合は[Ask Question](// stackoverflow.com/questions/ask)ボタンをクリックしてください。 – GhostCat

関連する問題