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)?
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)?
Antworten:
Szenario- / Testschritte:
1. Öffnen Sie einen Browser und navigieren Sie zu TestURL.
2. Scrollen Sie einige Pixel nach unten und nach oben
Zum Scrollen nach unten :
WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("window.scrollBy(0,250)");
ODER Sie können wie folgt vorgehen:
jse.executeScript("scroll(0, 250);");
Zum Scrollen nach oben :
jse.executeScript("window.scrollBy(0,-250)");
OR,
jse.executeScript("scroll(0, -250);");
Scrollen Sie zum Ende der Seite:
Szenario- / Testschritte:
1. Öffnen Sie einen Browser und navigieren Sie zu TestURL.
2. Scrollen Sie zum Ende der Seite
Weg 1: Mit JavaScriptExecutor
jse.executeScript("window.scrollTo(0, document.body.scrollHeight)");
Weg 2: Durch Drücken von Strg + Ende
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL, Keys.END);
Weg 3: Mit der Java Robot-Klasse
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_END);
robot.keyRelease(KeyEvent.VK_END);
robot.keyRelease(KeyEvent.VK_CONTROL);
scroll(0,-250)
Zum Ende einer Seite scrollen:
JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
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
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 als selenium.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);
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);
}
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.
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).
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.
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
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.
JavascriptExecutor ist am besten, um eine Webseite nach unten zu scrollen. Die
window.scrollTo
Funktion in JavascriptExecutor kann dies tun
JavascriptExecutor js = ((JavascriptExecutor) driver);
js.executeScript("window.scrollTo(0,100");
Der obige Code wird um 100 y-Koordinaten nach unten gescrollt
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)");