Help us understand the problem. What is going on with this article?

seleniumにてButtonがクリックできない時の対処法

More than 1 year has passed since last update.

環境

python 2.7(2019/5追記、多分3系統でも)
使用OS:OSX
環境ブラウザ:Google Chrome

imports
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

Buttonが反応しない

pythonを使ってseleniumを動かしていた時のこと。
下記のようにxpathを使いtype:'button'の要素を指定してclickしてみたがなぜかエラーが

driver.find_element_by_xpath('XPATH').click()

selenium.common.exceptions.WebDriverException: Message: unknown error: Element is not clickable at point (741, 1767)

この要素はclickできないと言うのだ。
表示されているchrome上でclickしてみたが普通にできるし動く。

試しにこのボタンをちゃんとfindできているのか確認ついでにclickableか聞いてみた

if EC.element_to_be_clickable(By.XPATH, 'XPATH'):
    print 'true'
    driver.find_element_by_xpath('XPATH').click()

trueと表示された上で同様のエラーメッセージが表示された。なんでや

問題解決

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

この一行を直前に追加したら動くようになった
ここを参考にスクロールをさせてみた。
https://selenium-python.a-zumi.net/faq.html

どうやらブラウザ上にて画面外にあるButtonはclickできないようだ。

似たような問題

https://stackoverflow.com/questions/35126293/how-to-set-text-into-textarea-with-selenium-webdriver/35128666#35128666
これを見る限りではもしかしたらsendKeysも画面外にある場合は動かないのかも、、、
自分のケースでも対象がtype:submit()の場合は画面外に存在しても動いたため、全体的に人間が画面を通してブラウザを操作するのととても近いらしい。
画面内に対象があるかどうかは結構大事な問題なようだ。

DNA1980
なにか初歩で詰まった時に更新します。皆さんの役に立てれば
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away