ウィンドウ切り替え:
ウェブアプリケーションでは、複数のウィンドウやタブを使用する場合があります。Seleniumでは、switch_to.window()
メソッドを使用して別のウィンドウに切り替えることができます。以下に、ウィンドウの切り替え方法の例を示します。
from selenium import webdriver
# WebDriverの初期化
driver = webdriver.Chrome()
# 最初のウィンドウを開く
driver.get('https://example.com')
# 新しいウィンドウを開く
driver.execute_script("window.open('https://google.com', 'new_window')")
# ウィンドウのハンドルを取得して切り替える
handles = driver.window_handles
driver.switch_to.window(handles[1])
# 別のウィンドウで何か操作を実行する
# 最初のウィンドウに戻る
driver.switch_to.window(handles[0])
# 最初のウィンドウで何か操作を実行する
# WebDriverの終了
driver.quit()
並行処理:
Seleniumを使用して複数のウィンドウで並行処理を行う場合、Pythonのmultiprocessing
モジュールを使用することができます。以下に、並行処理によるスクリーンショットの取得方法の例を示します。
from selenium import webdriver
from multiprocessing import Pool
# スクリーンショットを取得する関数
def capture_screenshot(url):
driver = webdriver.Chrome()
driver.get(url)
driver.save_screenshot(f'{url}.png')
driver.quit()
if __name__ == '__main__':
urls = ['https://example1.com', 'https://example2.com', 'https://example3.com']
# プロセスプールの作成
pool = Pool(processes=len(urls))
# 各URLに対してスクリーンショットを取得するタスクを並行して実行
pool.map(capture_screenshot, urls)
# プロセスプールの終了
pool.close()
pool.join()
上記のコードでは、capture_screenshot
関数を定義し、multiprocessing.Pool
を使用して複数のプロセスで関数を並行して実行しています。各プロセスは異なるURLにアクセスしてスクリーンショットを取得し、ファイルに保存します。
このように、Seleniumを使用してウィンドウの切り替えと並行処理によるスクリーンショットの取得を行うことができます。これにより、複数のウィンドウでの操作や大量のスクリーンショットの取得を効率的に行うことができます。