敵のいない勉強部屋

日々学んだことや感じたことを書きます

英語字幕DB作成への道_Selenium編⑨ (ElementClickInterceptedException)

要素が画面上に表示されているのに、クリックすると ElementClickInterceptedException で失敗するときの解決方法が見つかりました。
それはexecute_script()。

Before

element = driver.find_element_by_css_selector('a.small-btn')
element.click()

After

element = driver.find_element_by_css_selector('a.small-btn')
driver.execute_script('arguments[0].click();', element)

今のところ百発百中で成功しています。
なんなら element.is_displayed() が Falseでも成功します。
素晴らしい。

裏側の動きがどういう風に違うのかはわかりませんが、
一旦この例外が出たときはexecute_script()を使っていくことにします。

解決策がみつかってよかった!