【Python】Seleniumを使ってWebページの任意の場所をクリックする方法

スクレイピング
この記事は約5分で読めます。

Seleniumで要素を取得したけどクリックできない

環境

python 3.6.8
使用OS:Ubuntu
環境ブラウザ:Google Chrome 75.0.3770.38 beta

事象

Seleniumを使ってスクレイピングを試みていたのですが、なぜか以下のようなメッセージが現れてボタンが押せないという問題に出くわしました。

from selenium import webdriver
import chromedriver_binary

url = 'xxxx'
driver.get(url)
driver.find_element_by_xpath("XPATH").click() #XPATHは自分がクリックしたいXPATH
>>selenium.common.exceptions.WebDriverException: Message: unknown error: Element is not clickable at point (486, 1564)

xpathの記述方法はこちらを参照ください。
https://qiita.com/rllllho/items/cb1187cec0fb17fc650a

解決策

調べているといくつか方法がありましたが私が採用した方法は、ボタンの位置情報を取得して、直接javascriptでボタンの位置をクリックする方法です。
【参照ページ】javascriptのボタンをselenium(python)を使用してクリックしたい

from selenium.webdriver.common.action_chains import ActionChains
elements = driver.find_element_by_xpath("XPATH")
loc = elements.location
x, y = loc['x'], loc['y']
actions = ActionChains(driver)
actions.move_by_offset(x, y)
actions.click()
actions.perform()

参考

他にもいくつか方法があったので、そちらも載せておきます。

【要素のhref属性をクリックする方法】
http://machine-learning-ai.hatenablog.com/entry/2017/10/25/143327

【javascriptで画面をスクロールさせる方法】
https://qiita.com/DNA1980/items/528ff6269986b262acdc

【一定時間待機する方法】
https://kurozumi.github.io/selenium-python/waits.html

【on_clickをjavascriptで直接実行する方法】
https://teratail.com/questions/96078

おすすめ書籍

スクレイピングに関してはこちらの書籍がおすすめです。

コメント

  1. サイトからの突然のコメントで申し訳ございません。
    初めまして。投資情報サイトGogoJungleを運営しています株式会社ゴゴジャンの宮田と申します。

    サイトを拝読しましてコメントしました。

    今回、コメントしました理由としましては、恐縮ではございますが、プログラミングの知識を、インジケーター・投資ナビ+の記事として投資情報サイトGogojungleでご掲載していただけいる力は十分にお持ちではないかと思い、コメント致しました。

    ただ、どんな会社かもお分かりにくいかと思います。
    初めての方でも商品作成~販売まで全て無料でサポートいたしますので、お気軽にお問合せください。

    詳しくはメールにてお問い合わせください!
    ご連絡心よりお待ちしています。

    株式会社ゴゴジャン
    宮田

タイトルとURLをコピーしました