tapitapi’s blog

1日1杯タピオカ!エンジニア

【Selenium】Element Not Interactable Exception エラー

Webサイトテストの自動化&高速化のため、PythonSeleniumを使用していた時、つまづいたので備忘録

 

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をクリックすることで解決できました。

 

まだまだseleniumpythonもビギナーなので、今後も勉強を続けていこうと思います。

 

おやすみなさいーーー