#環境
python 2.7(2019/5追記、多分3系統でも)
使用OS:OSX
環境ブラウザ:Google Chrome
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()
の場合は画面外に存在しても動いたため、全体的に人間が画面を通してブラウザを操作するのととても近いらしい。
画面内に対象があるかどうかは結構大事な問題なようだ。