selenium-webdriver
スクロール
サーチ…
前書き
このトピックでは、 selenium
スクロールを実行する方法のいくつかの方法を提供します
Pythonを使ったスクロール
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
を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)
も使用できることに注意してください
さまざまな方法でjavaを使用して異なるスクロール
下記のソリューションは、サポートされている別のプログラミング言語でも使用できます
- カスタムスクロールバー(ブラウザスクロールではありません)がある間に、Webページのページ/セクション/ディビジョンを下にスクロールします。 ここをクリックデモとチェックスクロールバーには独立した要素があります。
以下のコードでは、スクロールバーの要素を渡し、スクロールポイントが必要です。
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;
}
}
- カスタムスクロールバー(ブラウザスクロールではありません)がある間に、Webページのスクロールアップページ/セクション/ディビジョンを行います。 ここをクリックデモとチェックスクロールバーには独立した要素があります。
以下のコードでは、スクロールバーの要素を渡し、スクロールポイントが必要です。
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;
}
}
- 複数のブラウザスクロール (内蔵ブラウザ)を使用していて、 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;
}
}
- ブラウザのスクロール (In-Builtブラウザ)と上/下にスクロールする場合にスクロールアップ/ダウンするには可視領域またはダイナミックスクロールの要素を作成します 。 デモ用にここをクリック
以下のコードでは、あなたの要素を渡します。
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;
}
}
注:ケースを確認し、方法を使用してください。いずれかのケースが見つからない場合は、私に知らせてください。