Python

Python Seleniumでフォームのテキストボックスclearができない時の対応

Python

私の作成していたSeleniumでのプログラムでフォームのテキストボックスの値をリセット(clear)してから入力するようにしていたのですが、サイト側の構成がかわったようでclearが効かなくなってしまったので、対応方法についてのメモとなります。

環境としてはchrome driverを使用していました。

今までのフォームテキストボックスclearの方法

普通にclearをおこなってから、要素を入力していてうまく動作していました。

driver.find_element_by_xpath("xpath/hogehoge").clear()
driver.find_element_by_xpath("xpath/hogehoge").send_keys("入力します")

変更後のフォームテキストボックスclearの方法

clearが効かなくなってしまったので、いったんCtrl+Aとdeleteキーを押して入力内容を空にするとうまく動作しました。

sendKeysではなくsend_keysです。

from selenium.webdriver.common.keys import Keys

driver.find_element_by_xpath("xpath/hogehoge").send_keys((Keys.CONTROL + "a"))
driver.find_element_by_xpath("xpath/hogehoge").send_keys(Keys.DELETE)
driver.find_element_by_xpath("xpath/hogehoge").send_keys("入力します")

あとは、よくわからないのですが、2回clearをしてもうまく動きました。ただし、原因が分からないので上の方法を使っています。

driver.find_element_by_xpath("xpath/hogehoge").clear()
driver.find_element_by_xpath("xpath/hogehoge").clear()
driver.find_element_by_xpath("xpath/hogehoge").send_keys("入力します")

まとめ

今回はclearを使う代わりに強制的にテキストを削除して対応いたしました。

原因はサイト側のデザイン変更などがあるようです。materialデザインだとうまく動かないだとか、firefoxだとうまく動かないことが多いみたいですね。

Pythonのオススメ勉強方法

私がオススメするPython初心者向けの最初に購入すべき書籍は「シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全です。

シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全

この書籍は実際にシリコンバレーの一流エンジニアとして活躍している酒井潤さんが書いた本です。

内容も初心者から上級者までまとめられており、各Lessonも長すぎずに分かりやすくまとめられているので、初心者の方にもおすすめです。

シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全

今回は以上となります。

コメント

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