はじめに
PythonでSeleniumを用いたスクレイピングのプログラムを作成し、依頼者のパソコンで動作確認を行ったところ、「ElementClickInterceptedException」というエラーが発生しました。本記事では、その原因と解決方法について記録としてまとめます。
発生したエラーの概要
作成したプログラムは、あるサイトにアクセスしてログインボタンをクリックするという基本的な操作を行うものです。私のパソコンでは問題なく動作していたのですが、依頼者のパソコンで実行した際に、ログインボタンをクリックする処理で以下のようなエラーが発生しました。
selenium.common.exceptions.ElementClickInterceptedException
このエラーの原因を調査した結果、Seleniumは画面に表示されていない(画面外にある)要素に対してはclick()が実行できないという仕様があることがわかりました。
原因:画面サイズの違いによる要素の非表示
私の環境と依頼者の環境では画面サイズ(解像度)が異なっており、その違いにより、対象のボタンが画面外に表示されていたことが原因でした。Seleniumは目視で表示されていないボタンに対しては、element.click()では操作できないため、クリック操作に失敗していたことになります。
解決方法:JavaScriptのexecute_script()メソッドを使用する
このような場合には、JavaScriptを使用して強制的に要素をクリックさせる方法が有効です。Seleniumのexecute_script()メソッドを使うことで、画面に表示されていない要素でもクリックが可能となります。
以下に、実際のプログラム例を記載いたします。
# Chromeを起動する
browser = webdriver.Chrome(ChromeDriverManager().install())
browser.implicitly_wait(3)
# サイトのログインページにアクセスする
browser.get("サイトのログインページのURL")
browser.implicitly_wait(3)
# ログインボタンを取得し、JavaScriptでクリックする
login = browser.find_element(By.NAME, "action")
browser.execute_script("arguments[0].click();", login)
browser.implicitly_wait(3)
プログラムの解説
- 1〜3行目:Chromeブラウザを起動し、ブラウザオブジェクトを
browserという変数に格納しています。 - 4〜6行目:対象のサイトにアクセスしています。
"サイトのログインページのURL"の部分には実際のURLを記載してください。 - 7〜10行目:ログインボタンをJavaScriptでクリックする処理です。
- 8行目:
By.NAMEでログインボタンを特定し、loginという変数に格納します。私の場合はname="action"の要素でした。 - 9行目:
execute_script()を使用し、対象の要素を強制的にクリックしています。通常のlogin.click()ではエラーになっていました。 - 10行目:クリック後の遷移に備えて待機時間を設定しています。
おわりに
今回のエラーは、画面解像度の違いによってボタンが表示領域外になっていたことが原因でした。Seleniumで画面外の要素をクリックする必要がある場合は、JavaScriptによるクリック処理を導入することで対応できます。
同様のエラーでお困りの方にとって、少しでも参考になれば幸いです。
最後までお読みいただきありがとうございました。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
