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
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)
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
Utilisez l'attente explicite au lieu d'implicite.
new WebDriverWait(TestingSession.Browser.WebDriver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists((By.ClassName("pagination-r'"))));