2017-08-01 15 views
0

私は、左側にスクロール可能なメニューを持つWebアプリケーションを持っています。私のコードはかなりシンプルです:Selenium WebDriver JavaはChromeにスクロールする要素を見つけることができません

WebElement elementToScrollTo = driver.findElement(By.xpath(locator)); 
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", elementToScrollTo); 

ロケータは、Web要素/メニュー項目へのリンクです。問題はChromeで、最初の行はNoSuchElementExceptionです。だから明らかに私は最初に見つからないものにはスクロールできません。

しかし、奇妙なのはIEのすべてが完全に機能することです。要素が見つかり、メニューがスクロールします。その後、要素を使用します(つまり、その要素をクリックします)。

ブラウザウィンドウ全体をスクロールすることはできません。スクロールするには、左側のメニューパネルが必要です。

私は最新のChrome (60.0.3112.78 (Official Build) (64-bit))chromedriver 2.30を持っています。

注:実際に問題を把握しました。それが見つからない理由は、メニュー項目のレベル2要素の親にスクロールしないためです。 2番目の行(スクロール)はChromeで何もしません。そのため、ドライバはレベル3(レベル2の子)でメニュー項目を見つけられません。 Chromeではスクロールが機能しない可能性があります。

+0

私は試みることができるように、あなたは、私の完全なコードを与えることができますか? –

+0

完全なコードを教えてください –

+0

エラーは 'NoSuchElementException'という言い方をしています。異なるブラウザは' HTML DOM'を表現する方法が異なります。ありがとう – DebanjanB

答えて

0

frameにあるHTML要素に問題がある可能性があります。このような要素を処理するには、まずフレームを切り替える必要があります。

次のコマンドを試すことができます: driver.switchTo().frame()

また、上記のいずれかが動作しない場合implicitWaitを使用するようにしてください。たぶん、あなたの要素がロードに時間がかかるため、Webドライバはそれを見つけることができません。

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

関連する問題