selenium-wireも基本的にはseleniumと同じだが,拡張されたものになっている.
selenium.webdriver
がブラウザを操作する「webdriver」.これはlocal上でも動かせるし,remoteでも動かせる.dockerで動かす場合はremoteで動かすことになる.
例えば,localでchromeのdriverを用いるときは
from selenium import webdriver driver = webdriver.Chrome()
remoteの場合はこのページのdocker imageを用いてコンテナを起動しておく.また,driver
の生成時にurlを指定する.
# 例 driver = webdriver.Remote("http://localhost:4444/wd/hub")
selenium.webdriver.common.keys.Keys
はブラウザ上でReturn
やAlt
などのキー操作するときに使う.
selenium.webdriver.common.by.By
はwebページのelementを指定するときに用いる.
注意点
ボタンclickなどで新しいtabが開いても,driverのactiveなtabにはならないので,明示的に切り替える必要がある. 良い実装かはわからないが,とりあえず
for handle in driver.window_handles: driver.switch_to.window(handle)
で切り替える事ができる.
selenium-wireはseleniumに加えてresponceが保存されていて,http通信の内容が保存される.これを使うと通信したファイルを保存することなどが可能.
参考文献
selenium-python.readthedocs.io seleniumで読み込んだ画像をそのまま保存したい!! #Python - Qiita