ElementClickInterceptedException【python】

目次

経緯

pythonでスクレイピングのプログラムの依頼を受けてました。

とりあえず、プログラムが完成して、

依頼者のパソコンで試したところ、”ElementClickInterceptedException”というエラーが出てクリックできませんでした。

なので、今回、勉強しました。

seleniumは画面の外にある要素はクリックすることができない。

結論からいいますと、

「”selenium”は画面の外にある要素はクリックすることができない」というのが原因でした。

私のPCと依頼者のPCでは画面サイズが違っていて、そこが悪かったみたいです。

.execute_script()メソッドを使う

解決方法はJavaScriptのexecute.scriptメソッドを使うといいらしいです。

プログラムを書きます。「サイトに入って、ログインボタンをクリックする」という設定です。各importについては記述してません。

    # Chromeを起動する
    browser = webdriver.Chrome(ChromeDriverManager().install())
    browser.implicitly_wait(3)

    #サイトのログインページ入る
    browser.get("サイトのログインページのURL") 
    browser.implicitly_wait(3)

    #ログインクリック
    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を””の間に入れてください。

7~10行目は詳しく書きます。

7行目はコメントを書いています。

8行目にログインボタンの要素を取得するプログラムです。loginという変数に入れています。

私の場合は”action”というNAMEの要素でしたので、こんな書き方になっています。

9行目、ここでログインボタンをクリックしています。

私はここを「login.click()」と書いてしまっていて、エラーが出ました。

10行目は指定した要素が見つかるまでの待ち時間を設定しています。

こんな感じでできました。

参考になれば、幸いです。

ここまで読んでいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次