selenium-webdriver
스크롤링
수색…
소개
이 주제에서는 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)
는 스크롤링에 사용될 수 있습니다
다른 방법으로 자바를 사용하여 다른 스크롤
아래의 솔루션은 지원되는 다른 프로그래밍 언어에서도 사용할 수 있습니다.
- 사용자 정의 스크롤 막대 (브라우저 스크롤이 아님)가있는 동안 웹 페이지에서 페이지 / 섹션 / 부분을 아래로 스크롤하십시오. 여기를 클릭하십시오 데모 및 체크 스크롤바에는 독립적 인 요소가 있습니다.
아래 코드에서 스크롤 막대 요소를 전달하고 스크롤 지점이 필요합니다.
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;
}
}
- 사용자 정의 스크롤 막대 (브라우저 스크롤이 아님)가있는 동안 웹 페이지에서 스크롤 업 페이지 / 섹션 / 디비전을 수행하려면. 여기를 클릭하십시오 데모 및 체크 스크롤바에는 독립적 인 요소가 있습니다.
아래 코드에서 스크롤 막대 요소를 전달하고 스크롤 지점이 필요합니다.
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;
}
}
- 여러 브라우저를 스크롤 할 때 (내장 브라우저) 스크롤을 아래로 내리려면 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;
}
}
- 여러 브라우저가 스크롤 할 때 (내장 브라우저) 스크롤을 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;
}
}
- 여러 브라우저 스크롤 (내장 브라우저)을하고 아래쪽 화살표 키만 사용하여 아래 로 스크롤하려는 경우 아래로 스크롤하십시오. 데모를 보려면 여기를 클릭하십시오.
아래 주어진 코드에서
<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;
}
}
- 여러 브라우저 스크롤 (내장 브라우저) 및 위쪽 화살표 키만 위로 스크롤하려는 경우 위로 스크롤하십시오. 데모를 보려면 여기를 클릭하십시오.
아래 코드에서
<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;
}
}
- 브라우저 스크롤 (내장 브라우저) 및 고정 점만 사용 하여 위 / 아래로 스크롤 할 때 위 / 아래 스크롤을 수행 합니다 . 데모를 보려면 여기를 클릭하십시오.
아래 코드에서 스크롤 포인트를 전달하십시오. 긍정적 인 의미는 아래로, 부정적인 의미는 위로 스크롤.
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;
}
}
- 브라우저 스크롤 (내장 브라우저) 및 위 / 아래로 스크롤 할 때 위 / 아래 스크롤을 수행 합니다. 보이는 영역 또는 동적 스크롤에서 요소를 만듭니다 . 데모를 보려면 여기를 클릭하십시오.
아래 코드에서 요소를 전달하십시오.
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;
}
}
참고 : 사례를 확인하고 방법을 사용하십시오. 어떤 경우라도 빠진 것이 있으면 알려주세요.