J'ai un problème ; j'utilise le pilote web Selenium (Firefox) pour ouvrir une page web, cliquer sur quelques liens, etc. et ensuite faire une capture d'écran.
Mon script fonctionne correctement à partir de l'interface de gestion, mais lorsqu'il est exécuté via une commande travail cron il ne passe pas le premier test find_element(). J'ai besoin d'ajouter du débogage, ou quelque chose qui m'aide à comprendre pourquoi il échoue.
En fait, je dois cliquer sur une ancre "log in" avant d'accéder à la page de connexion. La construction de l'élément est :
<a class="lnk" rel="nofollow" href="http://stackoverflow.com/login.jsp?destination=/secure/Dash.jspa">log in</a>
J'utilise le trouver_élément Par la méthode LINK_TEXT :
login = driver.find_element(By.LINK_TEXT, "log in").click()
A) Comment vérifier que le lien est bien repris par Python ? Dois-je utiliser un bloc try/catch ?
B) Existe-t-il un moyen plus efficace ou plus fiable de localiser les DOM que par LINK_TEXT ? Par exemple, dans jQuery vous pouvez utiliser un sélecteur plus spécifique, $('a.lnk:contains(log in)').do_something() ;
J'ai résolu le problème principal et ce n'était qu'un problème de doigts. J'appelais le script avec des paramètres incorrects - une simple erreur.
J'aimerais tout de même avoir des indications sur la manière de vérifier si un élément existe. Aussi, un exemple/explication des Waits implicites / explicites au lieu d'utiliser un appel time.sleep() merdique.