【Selenium】Element Not Interactable Exception エラー
Webサイトテストの自動化&高速化のため、PythonのSeleniumを使用していた時、つまづいたので備忘録
checkboxに対してWebDriver のclick関数を呼んだところ、下記エラーが出たので、対処法を記載します
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
WebDriverの使い方
selenium-python.readthedocs.io
clickしようとしたcheckboxのHtmlはこんな感じ(プライバシーポリシーの同意)
<label for="privacy" class="container">I understand it.
<input type="checkbox" name="privacy id="privacy" value="privacy"/> <span class="checkmark"></span>
</label>
元々のpythonコード(Webdriver の初期化は行っている前提。self.driverで呼び出しできる状態)
# name = 'privacy' の要素を選択
element = self.driver.find_element_by_name('privacy')
# 選択した要素が見えるようにスクロール
self.driver.execute_script("arguments[0].scrollIntoView(true);", element)
# 選択した要素をクリック
element.click()
上記を下記に変更して解決しました
# name = 'privacy' の要素を選択
element = self.driver.find_element_by_name(setdata[data]['id'])
# 選択した要素が見えるようにスクロール
self.driver.execute_script("arguments[0].scrollIntoView(true);", element)
# label自体をクリック
self.driver.find_element_by_xpath(//label[@for='privacy']).click()
ただ単にinputだけのcheckboxではない場合に、先ほどのエラーが出るみたいです。
input の親要素labelをクリックすることで解決できました。
まだまだselenium もpythonもビギナーなので、今後も勉強を続けていこうと思います。
おやすみなさいーーー