Python

Python+Seleniumでタブを切り替えるには?

Python+Seleniumでタブを切り替えるには?

前回、新しいタブを開くことを覚えました。


次は、その開いたタブで処理したい場合、どうやって切り替えるか?です。

 

Python+Seleniumでタブを切り替えるには?

「window_handles」でタブ情報を取得し、「switch_to.window()」でタブへ飛びます。
いずれも「ChromeDriver」に対してのメソッドです。
window_handles[0]が現在開いているタブの情報で、新しく開くごとに配列に追加されていきます。

from selenium import webdriver
 
driver = webdriver.Chrome(【chromedriver.exeのパス】)
 
# URLを指定して、新しいタブを開く
driver.execute_script("window.open('https://〇〇');")
 
# 開いたタブに移動する
driver.switch_to.window(driver.window_handles[1])

 

タブが3つ以上になると上手く切り替えられない!?

私の環境では、タブが3つ以上になると切り替えが上手くいかないことがありました。
try - exceptで対処する方法があるそうです。

 

タブの数に関わらず、一番右のタブに切り替えるには?

window_handles[]の引数を「-1」にすると、一番右に開かれているタブに切り替えられます。

# 一番右のタブに移動する
driver.switch_to.window(driver.window_handles[-1])

 

まとめ

Python+Seleniumでタブの切り替えをするには、「window_handles」と「switch_to.window()」を組み合わせて使います。
iMacrosの時は「TAB T=〇」と数字で指定するだけでエラー無く切り替えられたので、ちょっと面倒に感じてしまいますね。
そもそも、複数のタブを扱うロジックにしなければ良いだけの話、とも言えるので、頭を切り替えようと思います。

-Python
-, , , , , ,