目次
chrome driverの自動更新
- Chromeのバージョンが上がると、chrome driver も毎回手動で更新保存する必要があった
- これを自動で行えるライブラリが「 webdriver-manager 」
webdriver-manager のインストール
python -m pip webdriver-manager以下のやり方であればChrome本体のVerにあったdriverを自動でインストールしてくれる
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.yahoo.co.jp/')
print(driver.title)手動で開いた後のChromeを操作
(1)ポートを固定してChromeを起動する(ここではポート:9222、とする)
- 任意の場所にフォルダを準備しておく
- Chromeの一時ファイルができる場所になる(サイズ大)
- 次のコマンドでChrome(IP+ポート番号)が起動できたとする(できない場合もあると想定)
"C:\Program Files\Google\Chrome\Application\chrome.exe" -remote-debugging-port=9222 --user-data-dir="任意フォルダへのパス(※)"- 利用されているポートを確認したい場合は、netstat -nao を使えれば、その時利用しているすべてのポート番号が表示される
- その中から、検索で「9222」を利用しているIPアドレスを取得しておく
- たぶん「”127.0.0.1:9222″」のはず
(2)毎回Chromeを起動する度に、上記スクリプトを叩くのは面倒。バッチファイルを作成しておく
- 上記のスクリプトをメモ帳に書き込んで、拡張子を .bat にする
- 例)openChrome.bat
(3)上記の方法で起動したChromeのウィンドウを使って、二段階認証や画面操作を手動で行った後にSeleniumに処理をまかせればよい
- そもそもChromeの二段階認証などがSleneniumで突破できない(面倒)だから、このようなやり方を行っている
- 手動で突破した後の画面からの自動操作を行いたい、というのが本来の目的。
(4)ポートを固定して起動したChromeのその後をSleniumで操作する
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
options = webdriver.ChromeOptions()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(executable_path=ChromeDriverManager().install(), options=options)
print(driver.title)Chromeがそのポート番号で待っているか、を確認要(ただし、管理者権限が必要)
参考URL
https://qiita.com/mimuro_syunya/items/2464cd2404b67ea5da56
https://naminai.com/起動しいる-chromeをpythonで操作する方法%E3%80%80プ-4973