私の作成していた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プロフェッショナル大全
今回は以上となります。
コメント