2017-07-30 11 views
2

J'essaie d'automatiser certains téléchargements pour mon employeur. J'utilise du sélénium avec du python et du chromedriver.ne peut pas cliquer sur l'élément div par le biais du texte

Je suis bloqué en cliquant sur cet élément div qui fait partie d'une liste déroulante javascript.

<div class="item " idx="2" style="" title="">N53AC : BABY MILK UP TO 6 MONTHS</div> 

J'ai été capable de cliquer sur ce bouton en utilisant vbscript en recherchant l'attribut innerText dans Internet Explorer.

Je l'ai déjà essayé cette

elemf = driver.find_elements_by_tag_name("div") 

for element in elemf: 
    #print(element.get_attribute("innerhtml")) 
    if element.get_attribute("innerhtml")=="N53AC : BABY MILK UP TO 6 MONTHS" or element.get_attribute("innertext")=="N53AC : BABY MILK UP TO 6 MONTHS" or element.text=="N53AC : BABY MILK UP TO 6 MONTHS": 
     element.click() 

Des pistes? Je suis un débutant complet en html.

+0

Pouvez-vous poster un lien sur la page Web? Je suggère de copier le xpath pour le bouton et d'utiliser 'driver.find_element_by_xpath()' – DJK

+0

Pouvez-vous partager le journal des exceptions? BTW vous devriez utiliser 'innerHTML' au lieu de' innerhtml' et 'innerText' au lieu de' innertext'. Essayez aussi 'XPath'' //div[.="N53AC: LAIT BÉBÉ JUSQU'À 6 MOIS "]' – Andersson

+0

Essayez avec 'if 'N53AC' dans element.text: ...' –

Répondre

0

Voici la réponse à votre question:

Le principal problème dans votre code est que vous essayez de find_elements_by_tag_name("div"); qui seront nombreux sur la HTML DOM actuelle. Au lieu de cela, vous devez restreindre votre recherche à quelque chose comme:

elemf = driver.find_elements_by_xpath("//div[@class='item ']"); 

Maintenant, nous pouvons entrer dans une boucle et appeler click() méthode comme suit:

for element in elemf: 
    my_attribute = element.get_attribute("innerHTML") 
    if my_attribute == "N53AC : BABY MILK UP TO 6 MONTHS" 
     element.click() 
     break 

Laissez-moi savoir si cela répond à votre question.