Seleniumとは?→ブラウザの操作を自動化できるツール
ブラウザ操作の自動化という言葉がとても魅力的で具体的なイメージも沸くのでぜひ取り入れていきたいと思いませんか?
そのツールの中でもSeleniumはとても便利(機能的な側面で)だと思っているのですが、その反面ドキュメントが少なく難解だとも思っています。
なのでドキュメントが少しでも増えることを祈りつつ、自分が困ったけどなんとか解決できたことを備忘録としてたまに残していこうと思います。
ただ最近はpraywrightというツールが存在しているため、そっちを使ったほうがいい気もしてるのでそもそもツール選定から検討したほうがよいかもしれないです。
参考リンク:Seleniumブラウザー自動化プロジェクト | Selenium
(なんでどのサイトも使い方の具体例とか書いてくれないんですかね、、いいサイトあったら教えてください、、)
以下簡単なメモレベルの備忘録
□パスの管理が面倒くさくなった場合は以下のコマンドにすることで自動で管理してくれた。
(AIに聞いたら教えてくれた。)
# def get_edge_driver(self):
# """Edge WebDriverを取得"""
# driver_path = EdgeChromiumDriverManager().install()
# if self.driver_path:
# shutil.move(driver_path, self.driver_path)
# return webdriver.Edge(service=EdgeService(driver_path))
# 実行コード
# driver = self.get_edge_driver()
# """Edge WebDriverを取得"""
# driver_path = EdgeChromiumDriverManager().install()
# if self.driver_path:
# shutil.move(driver_path, self.driver_path)
# return webdriver.Edge(service=EdgeService(driver_path))
# 実行コード
# driver = self.get_edge_driver()
□クリックしたときに新しいタブが開かれるタイプの時について
→新しいタブに自動で遷移しないので明示的に移動する必要がある。
以下は一例
# handle_array = driver.window_handles
# driver.switch_to.window(handle_array[1])
# driver.switch_to.window(handle_array[1])
□たまに出てくる最終確認みたいなのがクリックできないときは以下を試す。
# from selenium.webdriver.common.alert import Alert
# Alert(driver).accept()
# Alert(driver).accept()
□トラブルシューティング
・前までうまくいったのにうまくいかなくなった→ブラウザとドライバーバージョン不一致の可能性が高い。ブラウザのバージョンを確認して、現在バージョンのドライバーを取得する。
・処理が重くて途中で進まなくなる。→処理の流れが速すぎてハングってるかも。time.sleep(10)とか適当に突っ込んで様子見ていいかも。