I had a similar problem. Although it isn't the same as the question problem, it has the same error message in python and maybe helps others with the same problem as me (I'm willing to change this answer into another question if it isn't appropiate here).
A "loading" div with a spinner inside overlays the button I want to click. To solve this I just waited until this "loading" div goes invisible.
Here is a small code example:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Firefox()
driver.get("url/to/visit")
# do some clicks or actions
# this "wait" can be reused
wait = WebDriverWait(self.driver, timeout=15)
# invisibility check
spinner = driver.find_element(
By.CSS_SELECTOR, ".spinnercontainer")
wait.until(EC.invisibility_of_element(spinner))
# click button
driver.find_element(
By.CSS_SELECTOR, ".fa-exchange").click()
Here is the Selenium expected conditions reference for this invisibility check:
selenium.webdriver.support.expected_conditions.invisibility_of_element(element)
An Expectation for checking that an element is either invisible or not present on the DOM.
element is either a locator (text) or an WebElement
Before this implementation, I tried to wait until the button was clickable, but it didn't work because those conditions were satisfied regardless of the button being obscured by this spinner.
selenium.webdriver.support.expected_conditions.element_to_be_clickable(mark)
An Expectation for checking an element is visible and enabled such that you can click it.
element is either a locator (text) or an WebElement