Szukaj…


Wprowadzenie

W tym temacie omówiono kilka sposobów przewijania za pomocą selenium

Przewijanie za pomocą Pythona

1. Przewijanie do elementu docelowego (przycisk „PRZEGLĄDAJ SZABLONY” u dołu strony) za pomocą Actions

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. Przewijanie do elementu docelowego (przycisk „PRZEGLĄDAJ SZABLONY” u dołu strony) za pomocą JavaScript

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. Przewijanie do elementu docelowego (przycisk „PRZEGLĄDAJ SZABLONY” u dołu strony) za pomocą wbudowanej metody

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

Zauważ, że location_once_scrolled_into_view również przewija współrzędne x , y elementu po przewinięciu

4. Przewijanie do dołu strony za pomocą 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

Pamiętaj, że do przewijania można również użyć send_keys(Keys.DOWN) / send_keys(Keys.UP) i send_keys(Keys.PAGE_DOWN) / send_keys(Keys.PAGE_UP)

Różne przewijanie przy użyciu Java na różne sposoby

Poniższe rozwiązanie może być również użyte w innych obsługiwanych językach programowania z pewnymi zmianami składni


  1. Aby to zrobić Przewiń stronę / sekcję / dział w dół, gdy jest niestandardowy pasek przewijania (nie przewijanie w przeglądarce). Kliknij tutaj Aby zobaczyć wersję demo i sprawdź, czy pasek przewijania ma swój niezależny element.

W poniższym kodzie podaj swój element paska przewijania i wymagaj punktów przewijania.

    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. Aby wykonać przewijanie w górę strony / sekcji / podziału na stronie internetowej, gdy istnieje niestandardowy pasek przewijania (nie przewijanie w przeglądarce). Kliknij tutaj Aby zobaczyć wersję demo i sprawdź, czy pasek przewijania ma swój niezależny element.

W poniższym kodzie podaj swój element paska przewijania i wymagaj punktów przewijania.

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. Aby przewinąć w dół, gdy przewija się wiele przeglądarek (wbudowana przeglądarka) i chcesz przewinąć w dół za pomocą klawisza Page Down . Kliknij tutaj, aby zobaczyć wersję demonstracyjną

W podanym poniżej kodzie podaj element obszaru przewijania, taki jak <div> i wymagaj klawisza przewijania w dół.

 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. Aby przewijać w GÓRĘ, gdy przewija się wiele przeglądarek (wbudowana przeglądarka) i chcesz przewijać w górę za pomocą klawisza Page UP . Kliknij tutaj, aby zobaczyć wersję demonstracyjną

Poniżej podany kod przekaż element obszaru przewijania, taki jak <div> i wymagaj klawisza przewijania w górę.

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. Aby przewinąć w dół, gdy przewija się wiele przeglądarek (wbudowana przeglądarka) i chcesz przewinąć w dół za pomocą klawisza Tylko strzałka w dół . Kliknij tutaj, aby zobaczyć wersję demonstracyjną

W podanym poniżej kodzie podaj element obszaru przewijania, taki jak <div> i wymagaj klawisza strzałki w dół.

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. Aby przewijać w górę, gdy przewija się wiele przeglądarek (wbudowana przeglądarka) i chcesz przewijać w górę za pomocą klawisza strzałki tylko w górę . Kliknij tutaj, aby zobaczyć wersję demonstracyjną

W podanym poniżej kodzie podaj element obszaru przewijania, taki jak <div> i wymagaj klawisza up.

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. Aby przewijać w górę / w dół, gdy przewijasz przeglądarkę (wbudowana przeglądarka) i chcesz przewijać w górę / w dół tylko z ustalonym punktem . Kliknij tutaj, aby zobaczyć wersję demonstracyjną

W poniższym kodzie podaj swój punkt przewijania. Pozytywne oznacza w dół, a negatywne oznacza przewijanie w górę.

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. Aby przewijać w górę / w dół, gdy przewijasz przeglądarkę (wbudowana przeglądarka), a chcesz przewinąć w górę / w dół, aby wykonać element w widocznym obszarze lub przewijanie dynamiczne . Kliknij tutaj, aby zobaczyć wersję demonstracyjną

W poniższym kodzie podaj swój 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;
    }
}

Uwaga: sprawdź swoją sprawę i zastosuj metody. Jeśli brakuje jakiejkolwiek sprawy, daj mi znać.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow