Le sélénium Élément n'est pas visible exception

J'ai été chargé de la rédaction d'un analyseur de cliquer sur un bouton sur un site web et je rencontre des problèmes de cliquer sur un seul des boutons. Le code suivant fonctionne sur tous les boutons sauf un.

Voici le code html:
http://pastebin.com/6dLF5ru8

voici le code source html:
http://pastebin.com/XhsedGLb

code python:

 driver = webdriver.Firefox()  
 ...
 el = driver.find_element_by_id("-spel-nba")
 actions.move_to_element(el)
 actions.sleep(.1)
 actions.click()
 actions.perform()

J'obtiens cette erreur.

ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with

comme par Saifur j'ai juste essayé de t'attend avec le même élément n'est pas visible exception:

wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.XPATH, "//input[contains(@id,'spsel')][@value='nba']"))).click()
  • selenium-python.readthedocs.org/en/latest/waits.html
  • Merci, j'ai juste essayé d'attendre et il a expiré
  • quelle est l'url?
  • Pas de correspondance nom de la classe dans le code html que vous avez fournis. Vous utilisez le sélecteur de mal
  • Saifur, j'ai juste essayé de modifier. Il est de retour à l'endroit où il était quand j'ai posté.
  • Essayez d'utiliser findelements avec le même sélecteur et de voir combien d'éléments il retourne. Je me demande s'il y a des éléments cachés avec le même sélecteur. C'est un problème très commun
  • Padraic, c'est pour un client derrière un accès privé.
  • len(pilote.find_elements_by_id("-spsel-nba")) est 1
  • Pouvez-vous essayer avec le xpath j'ai fourni?
  • comme ceci: pilote.find_element_by_xpath("//input[contains(@id,'spsel')][@value='nba']")
  • utilisation explcit attendre avant cela comme wait = WebDriverWait(driver, 10) wait.until(EC.presence_of_element_located((By.XPATH, "//input[contains(@id,'spsel')][@value='nba']")))
  • tout iframe sur cette page?
  • Non, iframe sur la page.
  • est-il du délai @ EC? et peut demander la vous la raison de la non-utilisation click()?
  • non, c'est pas du timing sur CE. quand je clique sur il jette la même exception. attendre.jusqu'à ce que(CE.presence_of_element_located((Par.XPATH "//input[contains(@id,'spsel')][@value='nba']"))).cliquez sur()
  • Dernier essai avant que j'abandonne 🙂 driver = webdriver.Firefox() ... wait = WebDriverWait(driver, 10) wait.until(EC.presence_of_element_located((By.XPATH, "//div[@class='sport-selectors']//input[contains(@id,'spsel')][@value='nba']"))).click() driver.find_element_by_xpath("//div[@class='sport-selectors']//input[contains(@id,'spsel')][@value='nba']").click()
  • Même exception. Eh bien, le client et son foutu demandes!
  • Est-il possible d'ajouter des captures d'écran?
  • Permettez-moi de revenir vers le client et à lui dire. Vous ne savez pas si il veut le sortir de la.
  • J'ai résolu ce problème. Si vous regardez le source de la page, presque tous les éléments sont créés dynamiquement en JavaScript, qui webdriver ne pas les reconnaître. Une solution de contournement consiste à injecter certains JavaScripts pour effectuer une artificielle cliquez sur 😉

InformationsquelleAutor user4450305 | 2015-01-13