selenium-webdriver
Scrollen
Suche…
Einführung
In diesem Thema werden verschiedene Ansätze für das Scrollen mit selenium
Scrollen mit Python
1. Scrollen Sie mit Actions
Zielelement (Schaltfläche "BROWSE TEMPLATES" unten auf der Seite)
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.get('http://www.w3schools.com/')
target = driver.find_element_by_link_text('BROWSE TEMPLATES')
actions = ActionChains(driver)
actions.move_to_element(target)
actions.perform()
2. Scrollen Sie mit JavaScript
Zielelement (Schaltfläche "BROWSE TEMPLATES" unten auf der Seite)
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.w3schools.com/')
target = driver.find_element_by_link_text('BROWSE TEMPLATES')
driver.execute_script('arguments[0].scrollIntoView(true);', target)
3. Scrollen zum Zielelement (Schaltfläche "BROWSE TEMPLATES" am unteren Seitenrand) mit integrierter Methode
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('http://www.w3schools.com/')
target = driver.find_element_by_link_text('BROWSE TEMPLATES')
target.location_once_scrolled_into_view
Beachten Sie, dass location_once_scrolled_into_view
nach dem Scrollen auch x
, y
Koordinaten des Elements zurückgibt
4. Mit den Keys
zum Ende der Seite Keys
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('http://www.w3schools.com/')
driver.find_element_by_tag_name('body').send_keys(Keys.END) # Use send_keys(Keys.HOME) to scroll up to the top of page
Beachten Sie, dass send_keys(Keys.DOWN)
/ send_keys(Keys.UP)
und send_keys(Keys.PAGE_DOWN)
/ send_keys(Keys.PAGE_UP)
auch zum Scrollen verwendet werden können
Unterschiedliches Scrollen mit Java mit verschiedenen Möglichkeiten
Die folgende Lösung kann auch in anderen unterstützten Programmiersprachen mit einigen Syntaxänderungen verwendet werden
- So scrollen Sie nach unten / Seite / Bereich / Abteilung auf der Webseite, während eine benutzerdefinierte Bildlaufleiste vorhanden ist (kein Browser-Bildlauf). Klicken Sie hier, um zu sehen, ob die Bildlaufleiste ein unabhängiges Element hat.
Im folgenden Code übergeben Sie Ihr Bildlaufleistenelement und benötigen Bildlaufpunkte.
public static boolean scroll_Page(WebElement webelement, int scrollPoints)
{
try
{
System.out.println("---------------- Started - scroll_Page ----------------");
driver = ExecutionSetup.getDriver();
dragger = new Actions(driver);
// drag downwards
int numberOfPixelsToDragTheScrollbarDown = 10;
for (int i = 10; i < scrollPoints; i = i + numberOfPixelsToDragTheScrollbarDown)
{
dragger.moveToElement(webelement).clickAndHold().moveByOffset(0, numberOfPixelsToDragTheScrollbarDown).release(webelement).build().perform();
}
Thread.sleep(500);
System.out.println("---------------- Ending - scroll_Page ----------------");
return true;
}
catch (Exception e)
{
System.out.println("---------------- scroll is unsucessfully done in scroll_Page ----------------");
e.printStackTrace();
return false;
}
}
- So scrollen Sie nach oben / Seite / Bereich / Abteilung auf der Webseite, während eine benutzerdefinierte Bildlaufleiste vorhanden ist (kein Browser-Bildlauf). Klicken Sie hier, um zu sehen, ob die Bildlaufleiste ein unabhängiges Element hat.
Im folgenden Code übergeben Sie Ihr Bildlaufleistenelement und benötigen Bildlaufpunkte.
public static boolean scroll_Page_Up(WebElement webelement, int scrollPoints)
{
try
{
System.out.println("---------------- Started - scroll_Page_Up ----------------");
driver = ExecutionSetup.getDriver();
dragger = new Actions(driver);
// drag upwards
int numberOfPixelsToDragTheScrollbarUp = -10;
for (int i = scrollPoints; i > 10; i = i + numberOfPixelsToDragTheScrollbarUp)
{
dragger.moveToElement(webelement).clickAndHold().moveByOffset(0, numberOfPixelsToDragTheScrollbarUp).release(webelement).build().perform();
}
System.out.println("---------------- Ending - scroll_Page_Up ----------------");
return true;
}
catch (Exception e)
{
System.out.println("---------------- scroll is unsucessfully done in scroll_Page_Up----------------");
e.printStackTrace();
return false;
}
}
- Führen Sie einen Bildlauf nach unten durch, wenn Sie einen Bildlauf mit mehreren Browsern durchführen (In-Built-Browser) und Sie mit der Bild-Ab-Taste nach unten scrollen möchten. Klicken Sie hier für eine Demo
Im folgenden Code übergeben Sie Ihr Bildlaufelement wie
<div>
und benötigen eine Abwärtspfeiltaste.
public static boolean pageDown_New(WebElement webeScrollArea, int iLoopCount)
{
try
{
System.out.println("---------------- Started - pageDown_New ----------------");
driver = ExecutionSetup.getDriver();
dragger = new Actions(driver);
for (int i = 0; i <= iLoopCount; i++)
{
dragger.moveToElement(webeScrollArea).click().sendKeys(Keys.PAGE_DOWN).build().perform();
}
System.out.println"---------------- Ending - pageDown_New ----------------");
return true;
}
catch (Exception e)
{
System.out.println("---------------- Not able to do page down ----------------");
return false;
}
}
- Führen Sie einen Bildlauf nach oben durch, wenn Sie einen Bildlauf mit mehreren Browsern durchführen (In-Built-Browser) und Sie mit der Bild-Auf- Taste nach oben blättern möchten. Klicken Sie hier für eine Demo
Im folgenden Code übergeben Sie Ihr Bildlaufelement wie
<div>
und benötigen einen Aufwärtspfeil.
public static boolean pageUp_New(WebElement webeScrollArea, int iLoopCount)
{
try
{
System.out.println("---------------- Started - pageUp_New ----------------");
driver = ExecutionSetup.getDriver();
dragger = new Actions(driver);
for (int i = 0; i <= iLoopCount; i++)
{
dragger.moveToElement(webeScrollArea).click().sendKeys(Keys.PAGE_UP).build().perform();
}
System.out.println("---------------- Ending - pageUp_New ----------------");
return true;
}
catch (Exception e)
{
System.out.println("---------------- Not able to do page up ----------------");
return false;
}
}
- Führen Sie einen Bildlauf nach unten durch, wenn Sie einen Bildlauf mit mehreren Browsern durchführen (In-Built-Browser) und mit der Pfeiltaste Nur Abwärts nach unten scrollen möchten. Klicken Sie hier für eine Demo
Im folgenden Code übergeben Sie Ihr Bildlaufelement wie
<div>
und benötigen die Abwärtstaste.
public static boolean scrollDown_Keys(WebElement webeScrollArea, int iLoopCount)
{
try
{
System.out.println("---------------- Started - scrollDown_Keys ----------------");
driver = ExecutionSetup.getDriver();
dragger = new Actions(driver);
for (int i = 0; i <= iLoopCount; i++)
{
dragger.moveToElement(webeScrollArea).click().sendKeys(Keys.DOWN).build().perform();
}
System.out.println("---------------- Ending - scrollDown_Keys ----------------");
return true;
}
catch (Exception e)
{
System.out.println("---------------- Not able to do scroll down with keys----------------");
return false;
}
}
- So scrollen Sie nach oben, wenn Sie mit mehreren Browsern blättern (In-Built-Browser) und mit Nur Pfeil nach oben blättern möchten. Klicken Sie hier für eine Demo
Im folgenden Code übergeben Sie Ihr Bildlaufelement wie
<div>
und benötigen den Aufwärtsschlüssel.
public static boolean scrollUp_Keys(WebElement webeScrollArea, int iLoopCount)
{
try
{
System.out.println("---------------- Started - scrollUp_Keys ----------------");
driver = ExecutionSetup.getDriver();
dragger = new Actions(driver);
for (int i = 0; i <= iLoopCount; i++)
{
dragger.moveToElement(webeScrollArea).click().sendKeys(Keys.UP).build().perform();
}
System.out.println("---------------- Ending - scrollUp_Keys ----------------");
return true;
}
catch (Exception e)
{
System.out.println("---------------- Not able to do scroll up with keys----------------");
return false;
}
}
- Führen Sie einen Bildlauf nach oben / unten durch, wenn Sie im Browser einen Bildlauf durchführen (In-Built-Browser) und mit einem festen Punkt nach oben / unten blättern möchten. Klicken Sie hier für eine Demo
Im folgenden Code übergeben Sie Ihren Bildlaufpunkt. Positiv bedeutet nach unten und negativ bedeutet nach oben.
public static boolean scroll_without_WebE(int scrollPoint)
{
JavascriptExecutor jse;
try
{
System.out.println("---------------- Started - scroll_without_WebE ----------------");
driver = ExecutionSetup.getDriver();
jse = (JavascriptExecutor) driver;
jse.executeScript("window.scrollBy(0," + scrollPoint + ")", "");
System.out.println("---------------- Ending - scroll_without_WebE ----------------");
return true;
}
catch (Exception e)
{
System.out.println("---------------- scroll is unsucessful in scroll_without_WebE ----------------");
e.printStackTrace();
return false;
}
}
- Führen Sie einen Bildlauf nach oben / unten durch, wenn Sie im Browser einen Bildlauf durchführen (In-Built-Browser) und Sie nach oben / unten auf Zum Element im sichtbaren Bereich oder dynamischen Bildlauf blättern möchten. Klicken Sie hier für eine Demo
Im folgenden Code übergeben Sie Ihr Element.
public static boolean scroll_to_WebE(WebElement webe)
{
try
{
System.out.println("---------------- Started - scroll_to_WebE ----------------");
driver = ExecutionSetup.getDriver();
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", webe);
System.out.println("---------------- Ending - scroll_to_WebE ----------------");
return true;
}
catch (Exception e)
{
System.out.println("---------------- scroll is unsucessful in scroll_to_WebE ----------------");
e.printStackTrace();
return false;
}
}
Hinweis: Bitte überprüfen Sie Ihren Fall und verwenden Sie Methoden. Wenn irgendein Fall fehlt, lass es mich wissen.