2019年7月8日月曜日

PythonでSeleniumのclickメソッドは効かない

PythonでSeleniumのclickメソッドがどうしても効かない問題に遭遇しました。

最初に使ったソースコードは以下の通りです。

from selenium import webdriver
driver = webdriver.Firefox()
driver.get('https://xxxxx/')  # 自分の検証サイトのURL
submit = driver.find_element_by_id("submitbutton")
submit.click()


調べたところ、要素はブラウザー上にクリックできない場所に存在している可能性があります。

でしたら、ブラウザーを最下部に移動してみようと考えました。

以下のコードを使って、最下部にスクロールしました。

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

再度検証したところだめでした。


再度調査したら、Seleniumが介在せずそのまま実行するならうまくいくかもしれませんの情報がありました。

Seleniumで直接javascriptを実行し、ボタンをクリックします。

driver.execute_script("document.getElementById('submitbutton').click();")

検証したところ、だめでした。

「ENTER」キーならうまくいった情報もありましたので、

「ENTER」キーを使ってクリックします。

submit.send_keys(Keys.ENTER)

結果としてだめでした。

気分を取り直して、要素に焦点を当たってからクリックするのも検証しました。

要素に焦点を当たります

ActionChains(driver).move_to_element(submit).perform()

それでもだめでした。

最後に辿り着いたのは「submit」メソッドでした。

driver.submit()

やっとうまくいきました。

フォームの中のボタン、クリックメソッドを使うより、サブミットの方がいいらいいです。

0 件のコメント:

コメントを投稿