PythonとSeleniumでヘッドレスモードのテストを実行する方法
Seleniumはヘッドレス(画面非表示)モードでのテスト実行をサポートしています。Chromeブラウザでヘッドレス実行を行うには、ChromeOptionsクラスを利用します。このクラスのオブジェクトを作成し、add_argumentメソッドに対して--headlessパラメータを渡すことで、ブラウザ画面を表示せずにバックグラウンドでテストを実行できます。
ヘッドレスモードは、CI/CD環境やサーバー上でテストを自動実行する際に特に便利です。GUIの描画が不要になるため、テストの実行速度が向上し、マシンリソースの消費も抑えられます。
ここでは、ヘッドレスモードで起動したページからタイトル「About Careers at Tutorials Point - Tutorialspoint」を取得する例を見ていきましょう。
コード実装例
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Optionsクラスのオブジェクトを作成
c = Options()
# ヘッドレスパラメータを指定
c.add_argument("--headless")
# webdriverオブジェクトにヘッドレスオプションを渡す
driver = webdriver.Chrome(executable_path='../drivers/chromedriver', options=c)
# 暗黙的な待機時間を設定(秒)
driver.implicitly_wait(5)
# URLを起動
driver.get("https://www.tutorialspoint.com/about/about_careers.htm")
print('Page title: ' + driver.title)
# ブラウザを終了
driver.quit()実行結果
このコードを実行すると、コンソールにヘッドレスモードで取得したページタイトルが出力されます。
About Careers at Tutorials Point - Tutorialspoint
補足:新しいChromeバージョンでの注意点
Chrome 109以降では、従来の--headlessに代わって--headless=newの使用が推奨されています。新しいヘッドレスモードは実際のChromeブラウザと同じ挙動をするため、より本番環境に近い形でテストを行えます。
c.add_argument("--headless=new")また、Selenium 4.6以降ではSelenium Managerがドライバーを自動的にダウンロード・管理してくれるため、executable_pathの指定は不要になっています。環境に合わせて適切な設定を行いましょう。
-
SeleniumとPythonで要素とテキストを取得する方法
Selenium WebDriverを使えば、Webページ上の要素とそのテキストを簡単に取得できます。手順としては、まずid、クラス名、CSSセレクターなどのロケーターを使って対象の要素を特定し、次にtextプロパティを使って要素内のテキストを取得します。基本構文s = driver.find_element_by_css_selector(h4).textここでdriverはWebDriverオブジェクトです。find_element_by_css_selectorメソッドは、CSSセレクターをロケーターとして要素を特定するために使用され、引数にロケーター値(この場合はh4)を渡します。最後
-
PythonのSelenium WebDriverで特定要素のスクリーンショットを撮影する方法
Selenium WebDriverを使用すると、ページ全体ではなく、特定の要素だけを切り取った「部分的なスクリーンショット」を簡単に撮影できます。特定の要素のスクリーンショットを取得するには、まずid、name、class名などのロケーター(XPathやCSSセレクターなど)を使って、対象となるWeb要素を特定する必要があります。次に、そのWeb要素に対してscreenshot()メソッドを呼び出し、引数として拡張子付きの画像ファイル名を渡します。これにより、プロジェクトフォルダ内にその要素のスクリーンショットを含む新しい画像ファイルが作成されます。構文l=driver.find_eleme