J'essaie de choisir parmi une liste de 3 boutons, mais je ne trouve pas le moyen de les sélectionner. Vous trouverez ci-dessous le code HTML avec lequel je travaille.
<input name="pollQuestion" type="radio" value="SRF">
<font face="arial,sans-serif" size="-1">ChoiceOne</font><br />
<input name="pollQuestion" type="radio" value="COM">
<font face="arial,sans-serif" size="-1">ChoiceTwo</font><br />
<input name="pollQuestion" type="radio" value="MOT">
<font face="arial,sans-serif" size="-1">ChoiceThree</font>
Je peux le trouver en utilisant le code suivant:
for i in browser.find_elements_by_xpath("//*[@type='radio']"):
print i.get_attribute("value")
Cette sortie: SRF, COM, MOT
Mais je voudrais choisir ChoiceOne. (Pour cliquer dessus) Comment puis-je faire cela?
Utilisez le sélecteur CSS ou XPath pour sélectionner directement par l'attribut value
, puis cliquez dessus.
browser.find_elements_by_css("input[type='radio'][value='SRF']").click
# browser.find_element_by_xpath(".//input[@type='radio' and @value='SRF']").click
Corrections (mais OP devrait apprendre à chercher dans la documentation)
find_elements_by_css
n'existe pas, il s'appelle find_elements_by_css_selector
. On devrait pouvoir examiner le message d’exception et revenir à la documentation ici et comprendre pourquoi.find_element_by_css_selector
et find_elements_by_css_selector
? Le premier trouve le premier élément correspondant, le second une liste, vous devez donc utiliser [0] pour indexer. Ici est la documentation de l'API. La raison pour laquelle j'utilise ce dernier, c'est parce que j'ai copié votre code, ce que je ne devrais pas.find_elements_by_css_selector
a travaillé pour moi,
browser.find_elements_by_css_selector("input[type='radio'][value='SRF']")[0].click()
Selenium Webdriver Cliquez sur le bouton radio
Quand j'ai utilisé xpath:
driver.find_element_by_xpath("//input[@id='id_gender2']").click()
bouton radio non sélectionné
Mais j'ai utilisé css_selector:
driver.find_element_by_css_selector("input#id_gender1").click()
bouton radio sélectionné
browser.find_elements_by_xpath(".//input[@type='radio' and @value='SRF']")[0].click
Cela a fini par être la solution. Je recevais des erreurs sans le [0], qu'une liste ne possède pas d'attribut click () (même s'il n'y avait qu'une seule correspondance). Merci pour l'aide user1177636!