2016-08-11 9 views
0


私は自動化プロジェクトの使用セレンを持って、それはクロムのwebdriverを呼び出してテストケースを実行します。

しかし、クロムドライバーはウェブサイト上の要素ではありません。ポリマーフレームワーク
チェックはF12で要素を表示できます。クロムドライバーは要素を見つけることができません。セレン:chromedriverは、ポリマーのウェブサイト上の要素を見つけることができません

例:ここにサイトのURL https://shop.polymer-project.org/ ChomeDriverを使用して、要素の内部ノード「shadow-root」を見つけることはできません。 ここでコード:そのような要素:要素が見つかりません:{ "方法": "のXPathここ

System.setProperty("webdriver.chrome.driver", "chromedriver_win_2.23.exe"); 
WebDriver driver = new ChromeDriver(); 
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
driver.get("https://shop.polymer-project.org/"); 
Thread.sleep(5000); 

System.out.println(driver.getTitle()); 
System.out.println(driver.getPageSource()); 
WebElement shopnowbtn = driver.findElement(By.xpath("//shop-button/a")); 
shopnowbtn.click(); 

エラー

スレッド "メイン" org.openqa.selenium.NoSuchElementExceptionの例外であります"、"セレクタ ":" // * [@ class = 'style-scope shop-home']/a "} (セッション情報:chrome = 52.0.2743.116) (ドライバ情報:chromedriver = 2.23.409699(49b0fa931cda1caad0ae15b7d1b68004acd05129 )、プラットフォーム= Windows NT 6.1.7601 SP1 x86_64)(警告:サーバーはスタックトレース情報を提供しませんでした) コマンドの継続時間またはタイムアウト:10.04秒S

いくつかの私のインフォア:私はFirefoxDriverが正常に動作している使用していたクロームバージョン52.0.2743.116メートル、セレンサーバースタンドアロンバージョン2.53、ChromeDriverバージョン2.23
。私のユーザーのFirefoxのバージョン4.6

それでは、とにかくPolymerのウェブサイトのchromedriverによる自動化スクリプトを実行するにはどうしますか?
ありがとうございました

+0

クロームバージョンをダウングレードしましたか?私はそれがバージョンの互換性のためかもしれないと思う。 https://sites.google.com/a/chromiumをご覧ください。org/chromedriver/downloads – Siva

+0

こんにちはSiva。私は最後のバージョンのクロムを使用しています。 –

+0

その場合、私は、クロムブラウザのバージョンを51にダウングレードすることで試してみることをお勧めします。 – Siva

答えて

0

ブラウザによって多少の違いがあるため、要素が見つかりません。

このような状況では、両方のブラウザでセレクタを手動でチェックする必要があります。

クロムブラウザを調べると、 "style-scope shop-home"というクラスが見つからないことがわかります。

hrefに基づいてセレクタを使用することをおすすめします。ここにはxpathとcssのセレクタの変形があります。

//shop-button/a[contains(@href, 'list')] 

または

shop-button a[href*=list] 

ページは、常に両方のブラウザでセレクタをチェックし、ブラウザへのブラウザは異なる可能性が知っている

+0

こんにちは、ありがとう、私はクロムの正しいロケータを確認したコメント。このコメントを投稿するのは間違いです。詳しくは。 chromedriver 2.23はまだPolymerフレームワークではサポートされていません。 (私はセレン3.0ベータ2を使用していました) –

1

私はここで初心者ですのでコメントを使用できませんので、@laudaの回答に追加するとPolymerはShadow DOMを使用します。しかし、スタイリングのためにFirefoxとChromeのWebページのページソースには違いがあります。ドキュメントレベルのCSSは、Shadow DOM要素のローカルスタイルをオーバーライドすることがあります。 2つのブラウザでは、「今すぐ購入」という要素の外観も異なります。

前述のように、クラス値を削除するにはロケータを変更する必要があります。おそらくあなたが望む要素にidを追加するでしょう。

関連する問題