JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

PythonとSeleniumでJavaScriptを実行する方法【execute_script活用ガイド】

Selenium WebDriver(Python版)では、JavaScriptを実行することができます。Document Object Model(DOM)は、JavaScriptを通じてページ上の要素とやり取りを行います。SeleniumでJavaScriptのコマンドを実行するには、execute_scriptメソッドを使用します。実行したいコマンドは、このメソッドの引数として渡します。

ページを下方向にスクロールするような操作は、Seleniumの標準メソッドだけでは直接実行できない場合があります。こうした操作は、JavaScript Executorを使うことで実現できます。スクロール操作にはwindow.scrollToメソッドを使用し、X軸(横)方向にスクロールするピクセル数と、Y軸(縦)方向にスクロールするピクセル数を引数として渡します。

構文

driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")

サンプルコード:ページ最下部までスクロールする

from selenium import webdriver

driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")
driver.implicitly_wait(0.5)
driver.get("https://www.tutorialspoint.com/tutor_connect/index.php")

# ページ最下部までスクロール
driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")

この例では、document.body.scrollHeight(ページ全体の高さ)をY座標として指定することで、ページの一番下まで一気にスクロールしています。無限スクロール型のページや、下まで読み込まないと要素が表示されないページを自動化する際に非常に便利なテクニックです。

また、JavaScript Executorを使えば、リンクをクリックするといったWeb操作も実行できます。execute_scriptメソッドに対して、arguments[0].click()とクリック対象のWebElementを引数として渡します。

構文

s = driver.find_element(By.CSS_SELECTOR, "#id")
driver.execute_script("arguments[0].click();", s)

サンプルコード:クリックなどのWeb操作を実行する

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")
driver.implicitly_wait(0.5)
driver.get("https://www.tutorialspoint.com/index.htm")

# 要素を特定する
s = driver.find_element(By.XPATH, "//*[text()='Library']")

# execute_scriptメソッドでクリックを実行
driver.execute_script("arguments[0].click();", s)
print("クリック後のページタイトル: " + driver.title)

実行結果

スクリプトを実行すると、「Library」リンクがJavaScript経由でクリックされ、遷移先ページのタイトルがコンソールに出力されます。

execute_scriptが役立つ場面

  • スクロール操作: window.scrollToやscrollIntoViewで任意の位置へ移動
  • 隠れた要素のクリック: 通常のclick()では反応しない要素もJavaScriptならクリック可能
  • 属性の変更・取得: 要素のstyleやvalueなどを動的に操作
  • Ajax待機: jQuery.activeなどを確認して非同期処理の完了を判定

なお、最近のSelenium 4系ではfind_element_by_css_selectorfind_element_by_xpathなどの旧APIは廃止されています。find_element(By.CSS_SELECTOR, ...)のようにByクラスを使った書き方に置き換わっているため、環境に合わせて使い分けてください。

  1. PythonとSeleniumでWhatsAppチャットボットを作る方法

    はじめに この記事では、Pythonを使ってWhatsAppのチャットボットを作成する方法を解説します。TwitterやFacebook向けの一般的なチャットボットとは異なり、WhatsAppは運営ポリシーの関係上、プラットフォーム上で直接ボットを動かすことができません。 しかし、SeleniumというPythonの強力なパッケージを使えば、ブラウザの操作を自動化することでこれを実現できます。Seleniumを利用すれば、ブラウザ経由で「WhatsApp Web」を自由に操作できるのです。 必要なもの 準備が必要なのは、主に以下の3点です。 1. Selenium Seleniumはpip

  2. PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法

    はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c