Seleniumで要素までスクロールする方法

Selenium内の要素へのスクロールは、 execute_script メソッドを使用することで実行することができます。これは、ブラウザセッションにおけるJavaScriptの実行を可能とするものです。このアプローチにより、さまざまなSeleniumセレクタによって識別された任意のWebElementに柔軟にスクロールすることができるようになります。今回の記事は、Seleniumで特定の要素までスクロールする方法を記したステップ・バイ・ステップガイドです。これには、Webページに移動して特定の要素までスクロールする拡張コードの例などが含まれます。

Seleniumで要素までスクロールする方法

要素までスクロールするには、以下のことを行う必要があります。

  1. WebDriverインスタンスを初期化します。
  2. ターゲットWebページに移動します。
  3. 適切なセレクタを使用し、スクロール先のWebElementを特定します。
  4.  execute_script メソッドを使用し、要素までスクロールするJavaScriptコマンドを実行します。

以下は、Webページに移動して指定された要素(例:特定のIDを持つ要素など)までスクロールするコードの例です。

コード例

      from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager # Set up Chrome options chrome_options = Options() chrome_options.add_argument("--start-maximized") # Initialize the WebDriver driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options) # Navigate to the desired webpage driver.get("http://www.scrapingbee.com") # JavaScript code to scroll to a specific element js_code = "arguments[0].scrollIntoView({behavior: 'smooth', block: 'center'});" # Locate the WebElement you want to scroll to element = driver.find_element(By.ID, 'footer') # Execute the JavaScript code to scroll to the element driver.execute_script(js_code, element) # Optionally, you can add a delay to observe the scrolling import time time.sleep(2) # Close the WebDriver driver.quit() 

    

説明

  1. Chromeオプションの設定:Chromeを最大化して起動するように構成することで、スクリプト実行時における可視性を高めます。
  2. WebDriverの初期化: webdriver_manager を使用してChromeDriverバイナリを自動的に管理することで、設定を簡素化します。
  3. Webページへの移動:指定されたURLにWebDriverを誘導します。
  4. JavaScriptコード: scrollIntoView メソッドが拡張され、ビューポート内でのスムーズなスクロールや要素を中央に配置するオプションが追加されます。
  5. WebElementの特定: find_element と By.ID を併用し、スクロール先要素のターゲティングを行います。
  6. JavaScriptの実行:ターゲットのWebElementを引数として渡し、JavaScriptコードを実行します。
  7. 遅延(オプション):スクロール動作を監視するための遅延を追加します。
  8. WebDriverの終了:ブラウザセッションを閉じます。

Seleniumにおける効率的なスクロールのためのヒント

  • スムーズなスクロール: {behavior: 'smooth'} を使用することで、よりスムーズなスクロールが実現します。
  • 要素の配置:ビューポート内で要素を表示する場所に合わせて、 {block: 'center'} を start または end に調整することができます。
  • 要素の識別:さまざまなセレクタ(By.ID、 By.CLASS_NAME、 By.CSS_SELECTORなど)を使用し、要素の正確なターゲティングを行います。

このガイドに従うことで、Seleniumを使用してWebページ上の任意の要素まで効率的にスクロールすることができるようになるため、Web自動化スクリプトがより堅牢で使いやすくなります。SeleniumとPuppeteerで迷っていますか?両者の比較記事をご覧ください。

始める準備はできましたか?