ウィンドウハンドルを取得するために、SeleniumのWebDriverクラスには2つの重要なメソッドがあります。それぞれ、driver.getWindowHandle()とdriver.getWindowHandles()です。
driver.getWindowHandle(): このメソッドを使用すると、現在のウィンドウのハンドルを取得することができます。返されるハンドルは、String型の値であり、そのウィンドウの一意な識別子です。以下に例を示します。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
# 現在のウィンドウハンドルを取得
current_window_handle = driver.window_handles
print(current_window_handle)
driver.getWindowHandles(): このメソッドを使用すると、現在開かれているすべてのウィンドウのハンドルを取得することができます。返されるハンドルは、セット(Set)型の値であり、各ウィンドウの一意な識別子が含まれています。以下に例を示します。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
# すべてのウィンドウハンドルを取得
window_handles = driver.window_handles
print(window_handles)
これらのメソッドを活用することで、マルチウィンドウ環境での操作が可能になります。例えば、特定のウィンドウにフォーカスを当てる場合は、以下のようにdriver.switch_to.window()メソッドを使用します。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
# 新しいウィンドウを開く
driver.execute_script("window.open('https://example.com')")
# すべてのウィンドウハンドルを取得
window_handles = driver.window_handles
# 2番目のウィンドウにフォーカスを当てる
driver.switch_to.window(window_handles[1])
# 操作を行う...
# 元のウィンドウにフォーカスを戻す
driver.switch_to.window(window_handles[0])
このように、ウィンドウハンドルを取得して操作することで、ブラウザのマルチウィンドウ環境での自動化が可能になります。