Comment sélectionner un élément dans une liste déroulante à l'aide de Selenium WebDriver avec java?


Comment puis-je sélectionner un élément dans une liste déroulante comme le sexe (par exemple, homme, femme) en utilisant Selenium WebDriver avec Java?

J'ai essayé ceci

WebElement select = driver.findElement(By.id("gender"));
List<WebElement> options = select.findElements(By.tagName("Male"));
for (WebElement option : options) {
    if("Germany".equals(option.getText()))
        option.click();   
}

Mon code ci-dessus n'a pas fonctionné.

Author: T J, 2012-10-17

9 answers

Utilisation -

new Select(driver.findElement(By.id("gender"))).selectByVisibleText("Germany");

Bien sûr, vous devez import org.openqa.selenium.support.ui.Select;

 42
Author: some_other_guy, 2014-04-29 15:04:42

Il suffit d'envelopper votre WebElement dans Select Object comme indiqué ci-dessous

Select dropdown = new Select(driver.findElement(By.id("identifier")));

Une fois cela fait, vous pouvez sélectionner la valeur requise de 3 façons. Considérons un fichier HTML comme celui-ci

<html>
<body>
<select id = "designation">
<option value = "MD">MD</option>
<option value = "prog"> Programmer </option>
<option value = "CEO"> CEO </option>
</option>
</select>
<body>
</html>

Maintenant, pour identifier la liste déroulante, faites

Select dropdown = new Select(driver.findElement(By.id("designation")));

Pour sélectionner son option, dites "Programmeur", vous pouvez faire

dropdown.selectByVisibleText("Programmer ");

Ou

dropdown.selectByIndex(1);

Ou

dropdown.selectByValue("prog");

Codage heureux:)

 21
Author: Abhishek Singh, 2018-04-16 14:28:00

Tagname vous devriez mentionner comme cette "option", si du texte avec de l'espace nous pouvons utiliser cette méthode, cela devrait fonctionner.

WebElement select = driver.findElement(By.id("gender"));
List<WebElement> options = select.findElements(By.tagName("option"));

for (WebElement option : options) {

if("Germany".equals(option.getText().trim()))

 option.click();   
}
 5
Author: Sathish, 2013-11-20 14:43:18

Vous pouvez utiliser la classe 'Select' de selenium WebDriver telle que publiée par Maitreya. Désolé, mais je suis un peu confus à propos de, pour sélectionner le sexe de la liste déroulante pourquoi comparer la chaîne avec "Allemagne". Voici l'extrait de code,

Select gender = new Select(driver.findElement(By.id("gender")));
gender.selectByVisibleText("Male/Female");

Importez import org.openqa.selenium.support.ui.Select; après avoir ajouté le code ci-dessus. Maintenant, le sexe sera sélectionné ce que vous avez donné (Homme / Femme).

 3
Author: Deepu, 2012-11-28 11:35:02

Google "select item selenium webdriver" afficheComment définir une option comme sélectionnée à l'aide du client Selenium WebDriver (selenium 2.0) dans ruby comme premier résultat. Ce n'est pas Java, mais vous devriez pouvoir le traduire sans trop de travail. https://sqa.stackexchange.com/questions/1355/what-is-the-correct-way-to-select-an-option-using-seleniums-python-webdriver est dans le top 5, encore une fois pas Java mais l'API est très similaire.

 3
Author: Mene, 2017-08-15 11:03:18
WebElement selectgender = driver.findElement(By.id("gender"));
selectgender.sendKeys("Male");
 3
Author: Anand Somani, 2018-04-16 14:27:22
WebElement select = driver.findElement(By.id("gender"));
List<WebElement> options = select.findElements(By.tagName("option"));
for (WebElement option : options) {
   if("Germany".equals(option.getText()))
       option.click();   
}
 1
Author: Anand Somani, 2013-01-23 16:25:20

Pour trouver cet élément déroulant particulier

Select gender = new Select(driver.findElement(By.id("gender")));

Pour obtenir la liste de tous les éléments dans la liste déroulante

for(int j=1;j<3;j++)
    System.out.println(gender.getOptions().get(j).getText());

Pour le sélectionner via l'option de texte visible

gender.selectByVisibleText("Male");

Pour le sélectionner par index

gender.selectByIndex(1);
 1
Author: Rishi369, 2015-06-09 17:26:16
public class checkBoxSel {

    public static void main(String[] args) {

         WebDriver driver = new FirefoxDriver();
         EventFiringWebDriver dr = null ;


         dr = new EventFiringWebDriver(driver);
         dr.get("http://www.google.co.in/");

         dr.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

         dr.findElement(By.linkText("Gmail")).click() ;

         Select sel = new Select(driver.findElement(By.tagName("select")));
         sel.selectByValue("fil");

    }

}

J'utilise la PAGE de CONNEXION GOOGLE pour tester l'option de sélection. L'exemple ci-dessus consistait à trouver et à sélectionner la langue "Philippin" dans la liste déroulante. Je suis sûr que cela résoudra le problème.

 0
Author: MKod, 2015-06-09 17:26:49