Ich habe den folgenden Code in Selenium 1 (auch bekannt als Selenium RC) für das Scrollen von Seiten mit Java geschrieben:
selenium.getEval("scrollBy(0, 250)");
Was ist der entsprechende Code in Selenium 2 (WebDriver)?
java
selenium
selenium-webdriver
scroll
selenium-rc
Ripon Al Wasim
quelle
quelle
scroll(0,-250)
Zum Ende einer Seite scrollen:
JavascriptExecutor js = ((JavascriptExecutor) driver); js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
quelle
Es gibt viele Möglichkeiten, in Selenium Webdriver nach oben und unten zu scrollen. Ich verwende immer Java Script, um dasselbe zu tun.
Unten ist der Code, der immer für mich funktioniert, wenn ich nach oben oder unten scrollen möchte
// This will scroll page 400 pixel vertical ((JavascriptExecutor)driver).executeScript("scroll(0,400)");
Den vollständigen Code erhalten Sie hier. Bildlaufseite in Selen
Wenn Sie nach einem Element scrollen möchten, funktioniert der folgende Code für Sie.
je.executeScript("arguments[0].scrollIntoView(true);",element);
Das vollständige Dokument erhalten Sie hier. Blättern Sie für ein bestimmtes Element
quelle
Dies ist möglicherweise keine genaue Antwort auf Ihre Frage (in Bezug auf WebDriver), aber ich habe festgestellt, dass die
java.awt
Bibliothek stabiler ist alsselenium.Keys
. Eine Aktion zum Abblättern mit der ersteren lautet also:Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_PAGE_DOWN); robot.keyRelease(KeyEvent.VK_PAGE_DOWN);
quelle
Runterscrollen:
js.executeScript("window.scrollTo(0, document.body.scrollHeight);");
Hochscrollen:
js.executeScript("window.scrollTo(0, -document.body.scrollHeight);");
quelle
Versuche dies
Actions dragger = new Actions(driver); WebElement draggablePartOfScrollbar = driver.findElement(By.xpath("//*[@id='jobreslist_outercontainer']/div/div[2]/div")); // drag downwards int numberOfPixelsToDragTheScrollbarDown = 50; for (int i=10;i<500;i=i+numberOfPixelsToDragTheScrollbarDown){ try{ // this causes a gradual drag of the scroll bar, 10 units at a time dragger.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform(); Thread.sleep(1000L); }catch(Exception e1){} } // now drag opposite way (downwards) numberOfPixelsToDragTheScrollbarDown = -50; for (int i=500;i>10;i=i+numberOfPixelsToDragTheScrollbarDown){ // this causes a gradual drag of the scroll bar, -10 units at a time dragger.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform(); Thread.sleep(1000L); }
quelle
Ich wollte kein JavaScript oder externe Bibliotheken verwenden, daher war dies meine Lösung (C #):
IWebElement body = Driver.FindElement(By.TagName("body")); IAction scrollDown = new Actions(Driver) .MoveToElement(body, body.Size.Width - 10, 15) // position mouse over scrollbar .ClickAndHold() .MoveByOffset(0, 50) // scroll down .Release() .Build(); scrollDown.Perform();
Sie können dies auch einfach zu einer Erweiterungsmethode machen, um auf einem beliebigen Element nach oben oder unten zu scrollen.
quelle
Sie sollten der Seite einen Bildlauf hinzufügen, um alle Elemente mit auszuwählen
Selenium.executeScript("window.scrollBy(0,450)", "")
.Wenn Sie eine große Liste haben, fügen Sie die Schriftrolle während der Ausführung mehrmals hinzu. Beachten Sie, dass die Schriftrolle beispielsweise nur zu einem bestimmten Punkt auf der Seite führt (0,450).
quelle
JavascriptExecutor jse = ((JavascriptExecutor) driver); jse.executeScript("window.scrollTo(0, document.body.scrollHeight)");
Dieser Code funktioniert für mich. Die Seite, die ich teste, wird geladen, wenn wir nach unten scrollen.
quelle
Javascript Executor macht den Job immer perfekt:
((JavascriptExecutor) driver).executeScript("scroll(0,300)");
Wo
(0,300)
sind die horizontalen bzw. vertikalen Abstände. Stellen Sie Ihre Entfernungen gemäß Ihren Anforderungen ein.Wenn Sie ein Perfektionist sind und beim ersten Versuch genau die Entfernung ermitteln möchten, bis zu der Sie scrollen möchten , verwenden Sie dieses Tool, MeasureIt . Es ist ein brillantes Firefox-Add-On.
quelle
Vielen Dank für die Antwort von Ripon Al Wasim. Ich habe mich verbessert. Aufgrund von Netzwerkproblemen versuche ich es dreimal bis zur Unterbrechung der Schleife.
driver.get(url) # Get scroll height last_height = driver.execute_script("return document.body.scrollHeight") try_times = 0 while True: # Scroll down to bottom driver.execute_script("window.scrollBy(0,2000)") # Wait to load page time.sleep(scroll_delay) # Calculate new scroll height and compare with last scroll height new_height = driver.execute_script("return document.body.scrollHeight") if last_height == new_height: try_times += 1 if try_times > 3: try_times = 0 break last_height = new_height
quelle
1.Um die Seite nach unten zu scrollen, verwenden Sie window.scrollTo (0, document.body.scrollHeight) als Parameter
// Code, um nach unten zu navigieren
WebDriver driver = new ChromeDriver(); JavascriptExecutor jsExecuter = (JavascriptExecutor)driver; jsExecuter.executeScript(window.scrollTo(0,document.body.scrollHeight));
2.Um die Seite nach oben zu scrollen, verwenden Sie window.scrollTo (0, document.body.scrollTop) als Parameter
// Code, um nach oben zu navigieren
WebDriver driver = new ChromeDriver(); JavascriptExecutor jsExecuter = (JavascriptExecutor)driver; jsExecuter.executeScript(window.scrollTo(0,document.body.scrollTop));
3.Um die Seite nach links zu scrollen, verwenden Sie window.scrollTo (0, document.body.scrollLeft) als Parameter
// Code, um nach links zu navigieren
WebDriver driver = new ChromeDriver(); JavascriptExecutor jsExecuter = (JavascriptExecutor)driver; jsExecuter.executeScript(window.scrollTo(0,document.body.scrollLeft));
4.Um zu einem bestimmten Punktfenster zu scrollen.scrollTo (0,500) als Parameter
// Code zum Navigieren zu einem bestimmten Punkt, z. B. 500, wird hier als Wert übergeben
WebDriver driver = new ChromeDriver(); JavascriptExecutor jsExecuter = (JavascriptExecutor)driver; jsExecuter.executeScript(window.scrollTo(0,500));
Um die Navigation direkt im Browser zu überprüfen, öffnen Sie das Entwicklertool im Browser und navigieren Sie zur Konsole. Führen Sie den Befehl auf der Konsole window.scrollTo (0,400) aus.
quelle
JavascriptExecutor ist am besten, um eine Webseite nach unten zu scrollen. Die
window.scrollTo
Funktion in JavascriptExecutor kann dies tunJavascriptExecutor js = ((JavascriptExecutor) driver); js.executeScript("window.scrollTo(0,100");
Der obige Code wird um 100 y-Koordinaten nach unten gescrollt
quelle
JavascriptExecutor jse = (JavascriptExecutor)driver; jse.executeScript("window.scrollBy(0,250)");
quelle
Wenn Sie die Seite vertikal scrollen möchten, um eine Aktion auszuführen, können Sie dies mit dem folgenden JavaScript tun. ((JavascriptExecutor) Treiber) .executeScript ("window.scrollTo (0, document.body.scrollHeight)");
Where ‘JavascriptExecutor’ is an interface, which helps executing JavaScript through Selenium WebDriver. You can use the following code to import.
import org.openqa.selenium.JavascriptExecutor;
2.Wenn Sie zu einem bestimmten Element scrollen möchten, müssen Sie das folgende JavaScript verwenden.
WebElement element = driver.findElement (By.xpath ("// input [@ id = 'email']")); ((JavascriptExecutor) Treiber) .executeScript ("Argumente [0] .scrollIntoView ();", Element) ;;
Wobei 'Element' der Locator ist, in den Sie scrollen möchten.
3.Wenn Sie an einer bestimmten Koordinate scrollen möchten, verwenden Sie das folgende JavaScript.
((JavascriptExecutor) Treiber) .executeScript ("window.scrollBy (200,300)"); Wobei '200.300' die Koordinaten sind.
4.Wenn Sie in vertikaler Richtung nach oben scrollen möchten, können Sie das folgende JavaScript verwenden. ((JavascriptExecutor) Treiber) .executeScript ("window.scrollTo (document.body.scrollHeight, 0)");
Wenn Sie horizontal in die richtige Richtung scrollen möchten, verwenden Sie das folgende JavaScript. ((JavascriptExecutor) Treiber) .executeScript ("window.scrollBy (2000,0)");
Wenn Sie horizontal nach links scrollen möchten, verwenden Sie das folgende JavaScript. ((JavascriptExecutor) Treiber) .executeScript ("window.scrollBy (-2000,0)");
quelle