Wie kann ich den geb webdriver dazu bewegen, zu einem Element auf der Seite zu wechseln, das möglicherweise nicht in der Ansicht des Browsers ist? Das Element ist auf der Seite vorhanden und wird angezeigt. Es besteht jedoch die Möglichkeit, dass das Element unten auf der Seite angezeigt wird und der Browser nach unten scrollen muss, um das Element anzuzeigen.Wie wird in den Seiteninhalt der Seite gewechselt, der im Browserfenster nicht sichtbar ist?
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()
}
}
Mit dieser Seite als Beispiel: Wenn ein Element nicht im Hinblick auf die Seite und möglicherweise ganz am Ende, wie kann ich das WebDriver sagen, das Element in den Blick zu bringen? Ich habe einige komplizierte Tests, die fehlschlagen, wenn der Inhalt der Seite nicht angezeigt wird. In einigen Fällen bewegt sich der Treiber zum Element, auch wenn es nicht angezeigt wird. Aber ich möchte dem Fahrer explizit sagen, dass er sich zu einem Element bewegen soll, wenn er nicht für die Fälle in Sicht ist, in denen er sich nicht selbst bewegt.
Die Selenium-Bibliothek hat eine moveToElement() - Funktion, akzeptiert jedoch nur Objekte der WebElement-Klasse. Beim Erstellen von Seitenklassen werden alle Elemente, die in meinen Tests verwendet werden, im Inhaltsabschnitt deklariert und gehören daher zur SimplePageContent-Klasse. SimplePageContent kann auch nicht in ein WebElement umgewandelt werden. moveToElement(By.id("bottomOfPage"))
funktioniert, ist aber nicht ideal, weil ich keine hartcodierten Werte möchte. Ich übergebe lieber das Seiteninhaltsobjekt selbst, wenn es möglich ist.
Ich glaube, Sie haben eine Methode moveToElement auf Ihrer Seite Objektklassen hinzuzufügen. Die Methode verwendet JavaScriptExecutor, um JS auszuführen, um nach der Position des Objekts zu scrollen. Siehe unter http://stackoverflow.com/questions/12293158/page-scroll-up-or-down-in-selenium-webdriver-selenium-2-using-java&hl=de&hl=de – Buaban