2 votes

Selenium avec PhantomJS, click() ne fonctionne pas

J'ai un script fonctionnel pour manipuler un site. Lors de l'exécution avec webdriver.Chrome(chromedriver.exe) ça marche comme sur des roulettes. Mais lorsque j'essaie avec webdriver.PhantomJS(phantomjs.exe) ça ne marche pas.

Plus précisément, ce qui ne fonctionne pas c'est le click() dans une a le HTML est le suivant :

<a href="javascript:;" class="foo" original-title=""><div class="icon_bar"></div></a>

J'obtiens cet élément via self.driver.find_elements_by_class_name('foo') et je le mets dans une variable, il y en a des tonnes. Puis je crée une boucle et appelle current.click() .

Le problème est qu'il ne clique pas vraiment, si je vérifie le site manuellement, rien n'a changé.

  • Python 3.4.2
  • Selenium 2.44.0
  • Windows 8.1

1voto

dmb Points 1206

Il est connu que PhantomJS ne fonctionne pas toujours comme prévu sur certains sites Web. Vous pouvez utiliser des trucs et astuces comme send_key(Keys.RETURN) sur cette étiquette. Vous pouvez également essayer de cliquer sur une image, ou sur un autre tag. Vous pouvez également obtenir le href, puis l'appeler avec driver.get(yourhiref) .

D'autre part, avez-vous besoin d'un seul de ces éléments ? Ou de cliquer sur chaque élément à find_elements_by_class_name('foo') ? Parce que si c'est le premier cas, j'utiliserais xpath et un sélecteur css comme ceci :

driver.find_element_by_xpath("//a[@Class='foo']/div")[n].click()

o

driver.find_element_by_xpath("//a[@Class='foo']")[n].click()

où n est l'enfant que vous recherchez.

PS : Je préférerais un Firefox sans tête à PhantomJS.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X