ブラウザ上に表示されない可能性のあるページ上の要素にgeb webdriverを移動させるにはどうすればよいですか。要素がページ上に存在し、表示されますが、要素がページの下部に表示される可能性があり、ブラウザをスクロールして要素を表示する必要があります。一例として、このページを使用してブラウザウィンドウに表示されないgebページのコンテンツに移動するには?
import geb.Page
class myPage extends Page {
static url = "mypage.xhtml"
static at = {title == "myPage"}
static content = {
someElement = {$("#bottomOfPage")}
anotherElement = {$(".someClass",5)}
}
void clickElement(){
//possibility to fail because element may not be displayed in browsers view
//if not in view, scroll to element, then click
someElement.click()
}
}
、要素はページ上の表示ではなく、おそらく一番下にした場合、どのように私はビューに要素を持ってwebdriverをを伝えることができますか?私はページの内容が見えないときに失敗するいくつかの複雑なテストを持っています。場合によっては、ドライバが表示されていなくても要素に移動します。しかし、私はそれがそれ自身で動かないケースのために見えないならば、要素に移動するようにドライバに明示したいと思います。
セレンライブラリにはmoveToElement()関数がありますが、WebElementクラスのオブジェクトのみを受け入れます。 gebを使用すると、ページクラスを作成するときに、テストで使用されるすべての要素がコンテンツセクションで宣言されるため、SimplePageContentクラスになります。 SimplePageContentをWebElementにキャストすることもできません。 moveToElement(By.id("bottomOfPage"))
は機能しますが、ハードコーディングされた値を必要としないので理想的ではありません。 Idでは、できるだけ多くの場合ページコンテンツオブジェクト自体を渡すことが多い。
私はあなたがあなたのページのオブジェクトクラスにメソッドmoveToElementを追加しなければならないと思います。このメソッドはJavaScriptExecutorを使用してJSを実行し、オブジェクトの位置までスクロールします。 [this post]で上/下にスクロールする方法を参照してください(http://stackoverflow.com/questions/12293158/page-scroll-up-or-down-in-selenium-webdriver-selenium-2-using-java) – Buaban