【Python3】Seleniumを使用してウィンドウとタブの操作を行う方法

みなさまおはこんばんにちは、せなです。
今回はSeleniumでウィンドウとタブを操作する方法を説明したいと思います。

前提

以下のPGを記載したファイルを使用します。
事前に作成しましょう。

from selenium.webdriver import Chrome
driver = Chrome()

chromedriver を使用しますので、事前にインストールを行いましょう。
(MacでHomebrewを使用している場合は「brew install –cask chromedriver」で簡単にインストールできます。)

ウィンドウハンドルとは

まず、seleniumは複数のダブを表示した場合、それぞれのタブがウィンドウハンドルにウィンドウハンドラーとして格納されます。

driver.get("https://www.google.com/")
print(driver.window_handles)
driver.execute_script("window.open()") 
print(driver.window_handles)
----結果----
['CDwindow-D068F7416F4ACF716C470BD1CEDBC3DC']
['CDwindow-D068F7416F4ACF716C470BD1CEDBC3DC', 'CDwindow-B781E36B92CC6832A9D928523D70536C']

上記のようにそれぞれのタブにウィンドウハンドラーが設定されています。
リスト形式ですので driver.window_handles[0] のようにすることで値を取得することができます。

新規タブの作成

タブの新規作成は以下のように行います。

driver.execute_script("window.open()")

別タブへの遷移

別のタブへ遷移したい時には以下のように行います。

driver.execute_script("window.open()")
driver.switch_to.window(driver.window_handles[1])

タブを閉じる

タブを閉じるには以下のように行います。

driver.close()

ウィンドウを閉じる

ウィンドウを閉じたい時には以下のように行います。

driver.quit()

ウィンドウ設定関連

ウィンドウサイズの取得

ウィンドウのサイズを取得する場合は以下のように行います。

# 横幅
width = driver.get_window_size().get("width")
# 縦幅
height = driver.get_window_size().get("height")

ウィンドウサイズの変更

ウィンドウのサイズを変更したい場合は以下のように行います。

driver.set_window_size(1920, 1080)

全画面ウィンドウ

一般的なブラウザでF11を押した時と同じ挙動をしたい場合は以下のように行います。

driver.fullscreen_window()

ウィンドウの最大化&最小化

ウィンドウを画面一杯または小さくしたい時には以下のように行います。

driver.maximize_window()
driver.minimize_window()

ウィンドウの新規作成について

Seleniumではドライバー=ウィンドウとなっているためウィンドウを新規作成する場合は以下のようにする必要があります。

from selenium.webdriver import Chrome
driver1 = Chrome()
driver2 = Chrome()
driver1.get("https://www.google.com/")
driver2.get("https://store.google.com/")

また、この場合driver間でのハンドラーの共有は当然できませんので、間接的に行う必要があります。

最後に

ウィンドウとタブの操作について基本的な内容を説明させていただきました。
最近はSeleniumを使って遊ぶことが多いので、これからもたまに記事上げていこうと思います。

ではでは〜

Selenium, Python

Posted by sena