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


  1. 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;
    }
  }

  1. 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;
    }
}

  1. 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;
    }
}

  1. 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;
    }
}

  1. 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;
    }
}

  1. 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;
    }
}

  1. 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;
    }
}

  1. 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.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow