84 votes

Débogage de sélénium: l'élément n'est pas cliquable au point (X, Y)

J'essaie de gratter de ce site par le Sélénium.

Je veux cliquez sur "Page Suivante" buttom, pour ce que je fais:

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

il travaille pour de nombreuses pages, mais pas pour tous, j'ai eu 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

J'ai lu cette question

et j'ai essayé ceci

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 eu le même message d'erreur

209voto

RemcoW Points 1992

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)
 

18voto

Deepak Garud Points 483

J'ai rencontré 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
 

0voto

Rakesh Raut Points 48

Utilisez l'attente explicite au lieu d'implicite.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X