수색…


소개

이 주제에서는 selenium 을 사용하여 스크롤을 수행하는 방법에 대한 여러 가지 접근법을 제공합니다.

파이썬을 사용하여 스크롤하기

1. Actions 과 함께 대상 요소로 스크롤 (페이지 하단의 "BROWSE TEMPLATES"버튼)

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. JavaScript 하여 대상 요소로 스크롤 (페이지 하단의 "BROWSE TEMPLATES"버튼)

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. 내장 메소드를 사용하여 대상 요소로 스크롤 (페이지 하단의 "BROWSE TEMPLATES"버튼)

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

또한 location_once_scrolled_into_view 는 스크롤 한 후 요소의 x , y 좌표를 반환합니다.

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

참고로, send_keys(Keys.DOWN) / send_keys(Keys.UP)send_keys(Keys.PAGE_DOWN) / send_keys(Keys.PAGE_UP) 는 스크롤링에 사용될 수 있습니다

다른 방법으로 자바를 사용하여 다른 스크롤

아래의 솔루션은 지원되는 다른 프로그래밍 언어에서도 사용할 수 있습니다.


  1. 사용자 정의 스크롤 막대 (브라우저 스크롤이 아님)가있는 동안 웹 페이지에서 페이지 / 섹션 / 부분을 아래로 스크롤하십시오. 여기를 클릭하십시오 데모 및 체크 스크롤바에는 독립적 인 요소가 있습니다.

아래 코드에서 스크롤 막대 요소를 전달하고 스크롤 지점이 필요합니다.

    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. 사용자 정의 스크롤 막대 (브라우저 스크롤이 아님)가있는 동안 웹 페이지에서 스크롤 업 페이지 / 섹션 / 디비전을 수행하려면. 여기를 클릭하십시오 데모 및 체크 스크롤바에는 독립적 인 요소가 있습니다.

아래 코드에서 스크롤 막대 요소를 전달하고 스크롤 지점이 필요합니다.

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. 여러 브라우저를 스크롤 할 때 (내장 브라우저) 스크롤을 아래로 내리려면 Page Down 키를 사용 하여 아래 로 스크롤하십시오. 데모를 보려면 여기를 클릭하십시오.

아래 코드에서 <div> 와 같은 스크롤 영역 요소를 전달하고 페이지 아래로 키가 필요합니다.

 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. 여러 브라우저가 스크롤 할 때 (내장 브라우저) 스크롤을 UP하고 Page Up 키를 사용 하여 위로 스크롤하고자 할 때. 데모를 보려면 여기를 클릭하십시오.

아래 코드에서 <div> 와 같은 스크롤 영역 요소를 전달하고 페이지 위로 키가 필요합니다.

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. 여러 브라우저 스크롤 (내장 브라우저)을하고 아래쪽 화살표 키만 사용하여 아래 로 스크롤하려는 경우 아래로 스크롤하십시오. 데모를 보려면 여기를 클릭하십시오.

아래 주어진 코드에서 <div> 와 같은 스크롤 영역 요소를 전달하고 아래쪽 키가 필요합니다.

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. 여러 브라우저 스크롤 (내장 브라우저) 및 위쪽 화살표 키만 위로 스크롤하려는 경우 위로 스크롤하십시오. 데모를 보려면 여기를 클릭하십시오.

아래 코드에서 <div> 와 같은 스크롤 영역 요소를 전달하고 키를 필요로합니다.

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. 브라우저 스크롤 (내장 브라우저) 및 고정 점만 사용 하여 위 / 아래로 스크롤 할 때 위 / 아래 스크롤을 수행 합니다 . 데모를 보려면 여기를 클릭하십시오.

아래 코드에서 스크롤 포인트를 전달하십시오. 긍정적 인 의미는 아래로, 부정적인 의미는 위로 스크롤.

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. 브라우저 스크롤 (내장 브라우저) 및 위 / 아래로 스크롤 할 때 위 / 아래 스크롤을 수행 합니다. 보이는 영역 또는 동적 스크롤에서 요소를 만듭니다 . 데모를 보려면 여기를 클릭하십시오.

아래 코드에서 요소를 전달하십시오.

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

참고 : 사례를 확인하고 방법을 사용하십시오. 어떤 경우라도 빠진 것이 있으면 알려주세요.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow