web-dev-qa-db-fra.com

Sélénium-Débogage: L'élément n'est pas cliquable au point (X, Y)

J'essaie de gratter cela site par sélénium.

Je veux cliquer dans la "page suivante" mais je le fais pour ceci:

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

cela fonctionne pour plusieurs pages mais pas pour tous, j'ai cette erreur

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

toujours pour cette page

Je lis cette question

et j'ai essayé ça

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()

mais j'ai la même erreur

40
parik

Un autre élément couvre l’élément sur lequel vous devez cliquer. Vous pouvez utiliser execute_script() pour cliquer dessus.

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

J'ai eu un problème similaire où l'utilisation d'ActionChains ne résolvait pas mon erreur: WebDriverException: Message: erreur inconnue: l'élément n'est pas cliquable au point (5 74, 892).

J'ai trouvé une bonne solution si vous ne voulez pas utiliser 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

ou

    inputElement.send_keys(Keys.SPACE) #for checkbox etc
13
Deepak Garud

Utilisez l'attente explicite au lieu d'implicite.

 new WebDriverWait(TestingSession.Browser.WebDriver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists((By.ClassName("pagination-r'")))); 
2
Rakesh Raut