こんにちは!budouです!
今回はPythonでスクレイピングをしているときに実際に詰まった例外エラーとその対処に関して紹介出来ればと思います。
[ElementClickInterceptedException]エラーの原因と対処法に関しての紹介の記事になります。
ElementClickInterceptedExceptionとは
エラーメッセージには下記の様に記されています。
ElementClickInterceptedException: Message: element click intercepted
つまり、このエラーは「Selenium側で操作しようと思ったときに何かに邪魔されて出来ません」ということと解釈できます。
原因(どんな時に出たか)
↓をクリックしたいけど
↓のように「お邪魔オブジェクト」が出てきてクリックできない~
このエラーが出るときは以下のようなケースが考えられます。
・Seleniumでクリックさせたい場所に何か別の「お邪魔オブジェクト」がある。
・クリックさせたいのにクリックする場所が画面外にある。
...今回原因を探っていって「邪魔者があると操作出来ないとかSeleniumも意外に人間みたいなんだな」とかよくわからない感想を持ってしまいました。
実際の対処法
対処法として色々と考えられますが、今回は
- 画面サイズを変えることで(最大化する)「クリックさせたい場所」と「お邪魔オブジェクト」の配置を強制的にずらす
ことでクリック可能にすることで回避しました。
コードは下の一行追加しただけ。(ドライバーのインスタンスを立ち上げた直後やエラーになる直前など、適当な個所に入れ込んで画面を最大化させる)
driver.maximize_window()
おわりに
画面最大化ではなくて、「画面スクロール」などでも同じく回避できそうですよね。
今回のような「お邪魔オブジェクト」をそもそもseleniumに消させることって出来るのでしょうかね。 出来たら楽なのにな~
以上、よろしくお願いします。