Selenium、特に WebDriver v2.31 を取得して、Google マップとやり取りしようとしています。[最初の] [Get Directions] ボタンをクリックして住所のペアを入力し、2 つの住所の下にある [Get Directions] ボタンをクリックするところまで到達できます。これにより、ルート案内のセットが作成されます。私ができないのは、Selenium を [ルート案内] パネルの一番下までスクロールして、目的地と [マイマップに保存] リンクを表示できるようにすることです。ブラウザがスクロールバーを生成するため、問題が発生するかどうかはわかりません。
Yahoo!で検索できるようになりました。結果の Web ページの一番下までスクロールします。Webページのアーキテクチャに他のフレームやパネルがないためだと思います。そうは言っても、ブラウザは Web ページではなく、スクロール バーを生成しました。
マウスを押したままスクロール バーを下にドラッグすると、アクションを作成できます。ページのサイズが異なるか、パネルのサイズが異なる場合、このアクションを実行するために多くの再計算が発生するため、このソリューションは好きではありません。Yahoo! の単一の「ドキュメント」ウィンドウに似たソリューションを希望します。またはGoogleコード。
どんな助けでも大歓迎です。私は過去 3 日間、解決策を探してインターネットで頭を悩ませてきました。
ありがとう。
スティーブ
補遺: 以下のとおり。私は地図自体ではなく、道順を含むパネルで何かをしようとしています。後でテストする必要があるアプリケーションに似ているため、Google マップを使用しています。[Selenium] WebDriver をパネルの一番下までスクロールして、「次へ」リンクを選択できるようにする機能が必要です。これは、Google マップの [ルート案内] パネルの一番下までスクロールして、一番下に [保存] リンクが表示されるのと同じです。
パネルという用語を使用するときに、正しい用語を使用しているかどうかわかりません。問題は、Web ページが表示されたときにパネルが動的にスクロール バーを生成するように見えることです。
driver.switchTo().frame(driver.findElement(By.id("spsizer")));
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("javascript:window.scrollBy(250,750)", element);
driver.switchTo().defaultContent();
残念ながら、「パネル」はフレームに含まれていないか、フレームです... Selenium によって返される例外によって識別されます。
Exception in thread "main" org.openqa.selenium.NoSuchFrameException: Element is not a frame element: DIV
FireBug を使用して、パネルに ID (「spsizer」) があると判断したと思います。
これも機能しません:
element = driver.findElement(By.id("spsizer"));
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("javascript:window.scrollBy(250,750)", element);
これは [ルート案内] パネルの一番下までスクロールせずに実行されますが、例外もスローされません。