Selenium ブラウザ操作

Selenium は Web ページの要素を操作するだけでなく、ウィンドウの管理、ポップアップの処理、Cookies の操作、JavaScript の実行など、ブラウザ自体の動作も制御できます。

以下は、Selenium でよく使われるブラウザ操作とその説明です:

操作タイプメソッド説明
新しいウィンドウを開くexecute_script("window.open('URL');")JavaScript を使用して新しいウィンドウを開きます。
ウィンドウを切り替えるswitch_to.window(window_handle)指定されたウィンドウハンドルに切り替えます。
ウィンドウを閉じるclose()現在のウィンドウを閉じます。
ウィンドウを最大化するmaximize_window()ブラウザウィンドウを最大化します。
ウィンドウサイズを設定するset_window_size(width, height)ブラウザウィンドウのサイズを設定します。
全画面モードfullscreen_window()ブラウザウィンドウを全画面モードに設定します。
Web ページを開くget(url)指定された URL を開きます。
進むと戻るback()とforward()前のページに戻るか、次のページに進みます。
ページを更新するrefresh()現在のページを更新します。
Alert ポップアップを処理するswitch_to.alert組み合わせaccept() 或 dismiss()Alert ポップアップを処理し、確認またはキャンセルをクリックします。
Confirm ポップアップを処理するswitch_to.alert組み合わせaccept() 或 dismiss()Confirm ポップアップを処理し、確認またはキャンセルをクリックします。
Prompt ポップアップを処理するswitch_to.alert組み合わせsend_keys()とaccept() 或 dismiss()Prompt ポップアップを処理し、テキストを入力して確認またはキャンセルをクリックします。
Cookie を追加するadd_cookie(cookie_dict)指定された Cookie を追加します。
Cookie を取得するget_cookie(name) 或 get_cookies()指定された Cookie またはすべての Cookies を取得します。
Cookie を削除するdelete_cookie(name) 或 delete_all_cookies()指定された Cookie またはすべての Cookies を削除します。
JavaScript を実行するexecute_script(script)指定された JavaScript コードを実行します。
JavaScript の戻り値を取得するexecute_script("return ...")JavaScript を実行し、結果を返します。
iframe に切り替えるswitch_to.frame(iframe_element)指定された iframe に切り替えます。
メインページに切り戻すswitch_to.default_content()メインページに切り戻します。

1. ブラウザのポップアップを処理する(alert、confirm、prompt)

Web アプリケーションでは、ポップアップ(alert、confirm、prompt など)は一般的なユーザーインタラクションの方法です。Selenium はAlertクラスを提供して、これらのポップアップを処理します。

1.1 alert ポップアップを処理する

alertポップアップは通常、メッセージを表示するために使用され、ユーザーは「OK」ボタンをクリックして閉じることしかできません。

例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.alert import Alert

# 正しいドライバのパスを設定
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)


# Web ページを開く
driver.get("https://example.com")

# alert ポップアップをトリガー
driver.execute_script("alert('これは alert ポップアップです');")

# alert ポップアップに切り替え
alert = Alert(driver)

# ポップアップのテキストを取得
print(alert.text)

# 「OK」ボタンをクリックしてポップアップを閉じる
alert.accept()

# ブラウザを閉じる
driver.quit()

1.2 confirm ポップアップを処理する

confirmポップアップは通常、操作の確認に使用され、ユーザーは「OK」または「キャンセル」を選択できます。

例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.alert import Alert

# 正しいドライバのパスを設定
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# Web ページを開く
driver.get("https://example.com")

# confirm ポップアップをトリガー
driver.execute_script(confirm('これは confirm ダイアログです');)

# confirm ポップアップに切り替え
alert = Alert(driver)

# ポップアップのテキストを取得
print(alert.text)

# 「OK」ボタンをクリック
alert.accept()

# または「キャンセル」ボタンをクリック
# alert.dismiss()

# ブラウザを閉じる
driver.quit()

1.3 prompt ポップアップを処理する

promptポップアップは通常、ユーザー入力の取得に使用され、ユーザーはテキストを入力して「OK」または「キャンセル」を選択できます。

例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.alert import Alert

# 正しいドライバのパスを設定
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# ブラウザを起動
driver = webdriver.Chrome()

# Web ページを開く
driver.get("https://example.com")

# prompt ポップアップをトリガー
driver.execute_script(prompt('これはプロンプトダイアログです');)

# prompt ポップアップに切り替え
alert = Alert(driver)

# ポップアップのテキストを取得
print(alert.text)

# テキストを入力
alert.send_keys("用户输入")

# 「OK」ボタンをクリック
alert.accept()

# または「キャンセル」ボタンをクリック
# alert.dismiss()

# ブラウザを閉じる
driver.quit()

2. ウィンドウとタブを切り替える

Web アプリケーションでは、ユーザーが複数のウィンドウやタブを開くことがあります。Selenium はswitch_to.window()メソッドを提供して、ウィンドウやタブを切り替えます。

2.1 ウィンドウを切り替える

例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

# 正しいドライバのパスを設定
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# 最初のウィンドウを開く
driver.get("https://example.com")

# 2 番目のウィンドウを開く
driver.execute_script("window.open('https://example.org');")

# すべてのウィンドウハンドルを取得
window_handles = driver.window_handles

# 2 番目のウィンドウに切り替え
driver.switch_to.window(window_handles[1])

# 2 番目のウィンドウで操作
print(driver.title)

# 最初のウィンドウに切り替え
driver.switch_to.window(window_handles[0])

# ブラウザを閉じる
driver.quit()

2.2 タブを切り替える

タブの切り替えはウィンドウの切り替えと似ています。各タブは独立したウィンドウハンドルであるためです。

例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

# 正しいドライバのパスを設定
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# 最初のタブを開く
driver.get("https://example.com")

# 2 番目のタブを開く
driver.execute_script("window.open('https://example.org');")

# すべてのタブハンドルを取得
tab_handles = driver.window_handles

# 2 番目のタブに切り替え
driver.switch_to.window(tab_handles[1])

# 2 番目のタブで操作
print(driver.title)

# 最初のタブに切り替え
driver.switch_to.window(tab_handles[0])

# ブラウザを閉じる
driver.quit()

3. iframe を処理する

iframeiframe は Web ページに埋め込まれた別の Web ページです。Selenium はswitch_to.frame()メソッドを提供して iframe に切り替えます。

3.1 iframe に切り替える

例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

# 正しいドライバのパスを設定
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# Web ページを開く
driver.get("https://example.com")

# iframe に切り替え
iframe = driver.find_element_by_tag_name("iframe")
driver.switch_to.frame(iframe)

# iframe 内で操作
print(driver.page_source)

# メインページに切り替え
driver.switch_to.default_content()

# ブラウザを閉じる
driver.quit()

3.2 メインページに切り戻す

iframe 内での操作が完了したら、switch_to.default_content()メソッドを使用してメインページに切り戻すことができます。

例

# メインページに切り戻す
driver.switch_to.default_content()

4. ブラウザの Cookies 操作

Selenium はget_cookies()、add_cookie()、delete_cookie()などのメソッドを提供して、ブラウザの Cookies を操作します。

4.1 Cookies を取得する

例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

# 正しいドライバのパスを設定
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# Web ページを開く
driver.get("https://example.com")

# すべての Cookies を取得
cookies = driver.get_cookies()
print(cookies)

# ブラウザを閉じる
driver.quit()

4.2 Cookie を追加する

例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

# 正しいドライバーパスを設定する
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)


# ウェブページを開く
driver.get("https://example.com")

# Cookieを追加する
driver.add_cookie({"name": "test", "value": "123"})

# すべてのCookieを取得する
cookies = driver.get_cookies()
print(cookies)

# ブラウザを閉じる
driver.quit()

4.3 Cookie を削除する

例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

# 正しいドライバーパスを設定する
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# ウェブページを開く
driver.get("https://example.com")

# Cookieを追加する
driver.add_cookie({"name": "test", "value": "123"})

# Cookieを削除する
driver.delete_cookie("test")

# すべてのCookieを取得する
cookies = driver.get_cookies()
print(cookies)

# ブラウザを閉じる
driver.quit()

5. JavaScript コードを実行する

Selenium は提供しますexecute_script()JavaScriptコードを実行するためのメソッド。

5.1 JavaScript コードを実行する

例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

# 正しいドライバーパスを設定する
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# ウェブページを開く
driver.get("https://example.com")

# JavaScriptコードを実行する
driver.execute_script("alert('これは JavaScript ポップアップです');")

# ブラウザを閉じる
driver.quit()

5.2 JavaScript の戻り値を取得する

例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService

# 正しいドライバーパスを設定する
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# ウェブページを開く
driver.get("https://example.com")

# JavaScriptコードを実行して戻り値を取得する
result = driver.execute_script("return document.title;")
print(result)

# ブラウザを閉じる
driver.quit()

6. 総合サンプル

以下は、複数のブラウザ操作を使用する方法を示す完全な例です:

例


from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

# 正しいドライバーパスを設定する
service = ChromeService(executable_path="./chromedriver-mac-arm64/chromedriver")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# ウェブページを開く
driver.get("https://www.example.com")

# ウィンドウを最大化する
driver.maximize_window()

# Cookieを追加する
driver.add_cookie({"name": "test", "value": "123"})

# Cookieを取得する
cookie = driver.get_cookie("test")
print("Cookie:", cookie)

# JavaScriptを実行する
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

# Alertポップアップを処理する
driver.execute_script("alert('Hello, Selenium!');")
alert = driver.switch_to.alert
print("ポップアップテキスト:", alert.text)
alert.accept()

# iframeに切り替える
iframe = driver.find_element(By.ID, "iframe-id")
driver.switch_to.frame(iframe)

# メインページに戻る
driver.switch_to.default_content()

# ブラウザを閉じる
driver.quit()
その他の拡張