Je peux sélectionner le premier class = "hm-Login_InputField"> bien et passer le nom d'utilisateur
elem = driver.find_element_by_class_name("hm-Login_InputField Hidden ")
elem.click()
elem.send_keys("xxxxx")
Je suis fatigué de copier l'Xpath pour le 2ème zone de saisie de texte / mot de passe. avec des résultats inconstants, parfois cela fonctionne, parfois non.
/html/body/div[1]/div/div[1]/div/div[1]/div[2]/div/div[2]/input[2]
Comment puis-je sélectionner le 2e class = "hm-Login_InputField ? text zone de texte d'entrée / mot de passe?
Ai-je besoin d'un Xpath relatif? Comment est-ce dérivé?
J'ai essayé:
<div class="hm-Login ">
<div class="hm-Login_UserNameWrapper ">
<input type="text" class="hm-Login_InputField ">
<div class="hm-Login_InputText ">Join</div>
</div>
<div class="hm-Login_PasswordWrapper ">
<input type="text" class="hm-Login_InputField ">
<input type="password" class="hm-Login_InputField Hidden ">
<button tabindex="0" class="hm-Login_LoginBtn ">GO</button>
<div class="hm-Login_InputText ">Lost Login?</div>
</div>
</div>
elem = driver.find_element_by_class_name("hm-Login_InputField")
elem.click()
elem.send_keys("xxxxx")
NoSuchElementException: aucun élément de ce type: impossible de localiser l'élément: {"method": "css selector", "selector": ". hm-Login_InputField Hidden"} (Informations sur la session: chrome = 77.0.3865.120)
3 Réponses :
Si cela fonctionne parfois, c'est peut-être à cause d'un élément qui se charge plus lentement. Essayez d'ajouter time.sleep (2) avant d'appeler le deuxième élément et de voir si cela fonctionne.
Aussi au lieu de driver.find_element_by_class_name ("hm-Login_InputField Hidden") vous pouvez utiliser driver.find_elements_by_class_name ("hm-Login_InputField") et cela renverra tous les éléments avec la classe "hm-Login_InputField" . Ensuite, elem [0] sera votre première entrée elem [1] la seconde et continue encore et encore.
Vérifiez si un cadre est présent si oui, vous devez d'abord passer au cadre.
Ajoutez également wait first comme explicit wait comme visibilitéOfElementLocated ou presenceOfElementLocated p>
essayez également sous xpath:
//div[@class='hm-Login ']//div[@class='hm-Login_PasswordWrapper ']//input[@type='password']
OU
//input[@type='password']
elem = driver.find_element_by_xpath ("// div [@ class = 'hm-Login_Passwor dWrapper'] // input [@ type = 'text']") elem.click () elem.clear () je peux maintenant sélectionner la boîte, mais maintenant je ne peux pas .sendkeys (). et je reçois ElementNotInteractableException: élément non interactif J'ai essayé d'ajouter un WebDriverWait (pilote, 5) .until (EC.element_to_be_clickable ((By.XPATH, "// div [@ class = 'hm-Login_PasswordWrapper'] // entrée [@ type = 'text'] "))). cliquez sur () et. driver.implicitly_wait (10) # secondes à la fois sans succès ... c'est l'un des sites Web www.bet365.com.au..si vous voulez essayer.
Veuillez accepter la réponse si votre problème pose en question résoudre ... pour un nouveau problème, veuillez créer une autre question ... c'est comment fonctionne la pile et sa politique énoncée
Cet xpath a réussi:
Elem = driver.find_element_by_xpath(**"//div[@class='hm-Login_PasswordWrapper ']//input[@type='text']")** elem.click() elem.clear()
Je peux maintenant sélectionner la case.
Merci @Shubham Jain