Found a workaround years later after encountering the same problem again - unable to click element even though it SHOULD be clickable. The solution is to catch ElementNotInteractable
exception and attempt to execute a script to click the element.
Example in Typescript
async clickElement(element: WebElement) {
try {
return await element.click();
} catch (error) {
if (error.name == 'ElementNotInteractableError') {
return await this.driver.executeScript((element: WebElement) => {
element.click();
}, element);
}
}
}