J'essaie d'utiliser Selenium pour cliquer sur le bouton mis en évidence ci-dessus. Je n'ai aucun problème à localiser l'élément via:
download_button_path = "//button[@class='btn-primary']"
download_button = driver.find_element_by_xpath(download_button_path)
Cependant, quand j'essaie d'exécuter
download_button.click()
Je reçois le message d'erreur:
ElementNotVisibleException: Message: element not interactable
(Session info: chrome=70.0.3538.67)
(Driver info: chromedriver=2.42.591059 (a3d9684d10d61aa0c45f6723b327283be1ebaad8),platform=Mac OS X 10.11.6 x86_64)
Il semble que le bouton ne soit pas visible pour Selenium même si je suis capable de le voir lors de l'exécution du clic manuellement.
J'ai également essayé de survoler le bouton, puis de cliquer, ainsi que d'envoyer une touche Entrée/Retour au bouton, mais rien ne fonctionne.
Toute idée serait appréciée.
Dans le HTML, je vois que le btn-primaire est présent dans un bootstrap popup modal. Donc il peut y avoir un autre btn-primary derrière le pop modal. Le XPath trouvera l'élément qui est derrière le modal qui n'est pas interactif.
la classe btn-primary est une classe générique dans bootstrap qui sera utilisée dans tous les boutons primaires. Essayez avec un localisateur unique en référence à l'élément modal en tant que parent dans votre localisateur
download_button_path = "//[@class='lmn-edititem-modal']/../[@class=''btn-primary']"
wait = WebDriverWait(driver, 10)
download_button = wait.until(EC.visibility_of_element_located((By.XPATH, download_button_path)))
download_button .click()
Nous pouvons également essayer ceci avec le sélecteur CSS
driver.find_elements_by_css_selector(".lmn-edititem-modal .btn-primary")
Pour moi, l'extension de Xpath relative juste avec son parent a aidé.
button = driver.find_element_by_xpath("//button[@data-value='0']")
button.click()
#this did not work
button = driver.find_element_by_xpath("//section[2]/button[@data-value='0']")
button.click()
#this worked well