J'ai besoin de sélectionner un élément dans un menu déroulant.
Par exemple:
<select id="fruits01" class="select" name="fruits">
<option value="0">Choose your fruits:</option>
<option value="1">Banana</option>
<option value="2">Mango</option>
</select>
1) Je dois d'abord cliquer dessus. Je fais ça:
inputElementFruits = driver.find_element_by_xpath("//select[id='fruits']").click()
2) Après cela, je dois sélectionner le bon élément, disons Mango
.
J'ai essayé de le faire avec inputElementFruits.send_keys(...)
mais cela n'a pas fonctionné.
python
selenium
selenium-webdriver
web-scraping
webdriver
Adam Bovien
la source
la source
Select
classe rend le problème beaucoup plus facile à résoudre, voir la réponse que j'ai publiée.find_by_id
? Comment puis-je fournir la valeur alors? Aussi, comment trouver lexpath
d'un élément?Selenium fournit une
Select
classe pratique pour travailler avec desselect -> option
constructions:Voir également:
la source
Tout d'abord, vous devez importer la classe Select, puis vous devez créer l'instance de la classe Select. Après avoir créé l'instance de la classe Select, vous pouvez exécuter des méthodes de sélection sur cette instance pour sélectionner les options dans la liste déroulante. Voici le code
la source
J'espère que ce code vous aidera.
élément déroulant avec identifiant
élément dropdown avec xpath
Élément déroulant avec sélecteur css
Sélectionner 'Banana' dans une liste déroulante
ddelement.select_by_index(1)
ddelement.select_by_value('1')
ddelement.select_by_visible_text('Banana')
la source
J'ai essayé beaucoup de choses, mais mon menu déroulant était à l'intérieur d'une table et je n'ai pas pu effectuer une simple opération de sélection. Seule la solution ci-dessous a fonctionné. Ici, je mets en évidence un élément déroulant et j'appuie sur la flèche vers le bas jusqu'à obtenir la valeur souhaitée -
la source
Vous n'êtes pas obligé de cliquer sur quoi que ce soit. Utilisez find by xpath ou ce que vous choisissez, puis utilisez les touches d'envoi
Pour votre exemple: HTML:
Python:
C'est tout.
la source
Vous pouvez utiliser une combinaison de sélecteurs CSS dans un puits
Remplacez le 1 dans le sélecteur attribut = valeur par la valeur correspondant au fruit souhaité.
la source
Cela fonctionnera bien
la source
Cela fonctionne avec la valeur de l'option:
la source
De cette façon, vous pouvez sélectionner toutes les options dans n'importe quelle liste déroulante.
la source
for items in range(1,input1): inputs.select_by_index(items)
, mais cela commence à partir du deuxième index. Comment puis-je obtenir la première valeur?La meilleure façon d'utiliser la
selenium.webdriver.support.ui.Select
classe pour travailler avec la sélection déroulante, mais parfois cela ne fonctionne pas comme prévu en raison d'un problème de conception ou d'autres problèmes de HTML.Dans ce type de situation, vous pouvez également préférer une solution alternative en utilisant
execute_script()
comme ci-dessous: -la source
Selon le HTML fourni:
Pour sélectionner un
<option>
élément dans unsélection htmlvous devez utiliser le menu Sélectionner une classe . De plus, comme vous devez interagir avec lemenu déroulantvous devez induire WebDriverWait pour leelement_to_be_clickable()
.Pour sélectionner le
<option>
avec le texte comme Mango dans lemenu déroulantvous pouvez utiliser vous pouvez utiliser l'une des stratégies de localisation suivantes :Utilisation de l' attribut et de la méthode ID
select_by_visible_text()
:Utilisation de CSS-SELECTOR et de la
select_by_value()
méthode:Utilisation de XPATH et de la
select_by_index()
méthode:la source
classe publique ListBoxMultiple {
}
la source