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
おすすめ書籍
スクレイピングに関してはこちらの書籍がおすすめです。
リンク
コメント
サイトからの突然のコメントで申し訳ございません。
初めまして。投資情報サイトGogoJungleを運営しています株式会社ゴゴジャンの宮田と申します。
サイトを拝読しましてコメントしました。
今回、コメントしました理由としましては、恐縮ではございますが、プログラミングの知識を、インジケーター・投資ナビ+の記事として投資情報サイトGogojungleでご掲載していただけいる力は十分にお持ちではないかと思い、コメント致しました。
ただ、どんな会社かもお分かりにくいかと思います。
初めての方でも商品作成~販売まで全て無料でサポートいたしますので、お気軽にお問合せください。
詳しくはメールにてお問い合わせください!
ご連絡心よりお待ちしています。
株式会社ゴゴジャン
宮田