Selenium-Debugging: Element is not clickable at point (X,Y)

67,538

Solution 1

Another element is covering the element you are trying to click. You could use execute_script() to click on this.

element = driver.find_element_by_class_name('pagination-r')
driver.execute_script("arguments[0].click();", element)

Solution 2

I had a similar issue where using ActionChains was not solving my error: WebDriverException: Message: unknown error: Element is not clickable at point (5 74, 892)

I found a nice solution if you dont want to use execute_script:

    from selenium.webdriver.common.keys import Keys #need to send keystrokes

    inputElement = self.driver.find_element_by_name('checkout')

    inputElement.send_keys("\n") #send enter for links, buttons

or

    inputElement.send_keys(Keys.SPACE) #for checkbox etc

Solution 3

Because element is not visible on the browser, first you need to scroll down to the element this can be performed by executing javascript.

element = driver.find_element_by_class_name('pagination-r')
driver.execute_script("arguments[0].scrollIntoView();", element)
driver.execute_script("arguments[0].click();", element)

Solution 4

I have written logic to handle these type of exception .

   def find_element_click(self, by, expression, search_window=None, timeout=32, ignore_exception=None,
                       poll_frequency=4):
    """It find the element and click then  handle all type of exception during click

    :param poll_frequency:
    :param by:
    :param expression:
    :param timeout:
    :param ignore_exception:list It is a list of exception which is need to ignore.
    :return:
    """
    if ignore_exception is None:
        ignore_exception = []

    ignore_exception.append(NoSuchElementException)
    if search_window is None:
        search_window = self.driver

    end_time = time.time() + timeout
    while True:
        try:
            web_element = search_window.find_element(by=by, value=expression)
            web_element.click()
            return True
        except tuple(ignore_exception) as e:
            self.logger.debug(str(e))
            if time.time() > end_time:
                self.logger.exception(e)
                time.sleep(poll_frequency)
                break
        except Exception as e:
            raise
    return False

Solution 5

Use explicit wait instead of implicit.

 new WebDriverWait(TestingSession.Browser.WebDriver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists((By.ClassName("pagination-r'")))); 
Share:
67,538
parik
Author by

parik

Updated on January 26, 2021

Comments

  • parik
    parik over 3 years

    I try to scrape this site by Selenium.

    I want to click in "Next Page" buttom, for this I do:

     driver.find_element_by_class_name('pagination-r').click()
    

    it works for many pages but not for all, I got this error

    WebDriverException: Message: Element is not clickable at point (918, 13). Other element would receive the click: <div class="linkAuchan"></div>
    

    always for this page

    I read this question

    and I tried this

    driver.implicitly_wait(10)
    el = driver.find_element_by_class_name('pagination-r')
    action = webdriver.common.action_chains.ActionChains(driver)
    action.move_to_element_with_offset(el, 918, 13)
    action.click()
    action.perform()
    

    but I got the same error