PythonのSelenium WebDriverでブラウザを操作する際、ブラウザを閉じるためのメソッドとして driver.quit()
と driver.close()
があります。これらのメソッドは似ているようでいて、その挙動には重要な違いがあります。
driver.close()
と driver.quit()
の基本的な違い
driver.close()
メソッドは、WebDriverがフォーカスしているブラウザウィンドウを閉じます。一方、driver.quit()
メソッドは、そのセッションに関連付けられたすべてのブラウザウィンドウを閉じ、WebDriverセッションを終了します。
ChromeDriverの場合の注意点
特にChromeDriverを使用する場合、driver.close()
を使用してもChromeDriverプロセスが終了しないことがあります。そのため、テスト後にブラウザを開いたままにする特別な意図がない限り、driver.quit()
を使用してブラウザとWebDriverのプロセスを正常に終了させることが推奨されています。
with
文を使った安全なブラウザの終了方法
また、Pythonの with
文を使用することで、ブラウザの終了処理をより安全に行うことができます。with
文を使用すると、ブロックの終了時に自動的に driver.quit()
が呼び出され、ブラウザとWebDriverのプロセスが正常に終了します。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
with webdriver.Firefox() as driver:
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
この方法を使用すると、ブラウザごとの終了方法の違いを吸収できるため、覚えておくと便利です。
以上、Python Seleniumの driver.quit()
と driver.close()
の違いについての解説でした。これらの違いを理解して、適切なブラウザの終了方法を選びましょう。