web-dev-qa-db-fra.com

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 telle que le sexe (par exemple un homme ou une femme) à l'aide de Selenium WebDriver avec Java?

J'ai essayé ça

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é.

39
user1754106

Utilisation -

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

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

42
some_other_guy

Enroulez simplement votre WebElement dans Select Object comme indiqué ci-dessous

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

Une fois que cela est fait, vous pouvez sélectionner la valeur requise de 3 manières. 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

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

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

dropdown.selectByVisibleText("Programmer ");

ou

dropdown.selectByIndex(1);

ou

dropdown.selectByValue("prog");

Bonne codage :)

21
Abhishek Singh

Tagname vous devriez mentionner comme cette "option", si le texte avec 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
Sathish

Vous pouvez utiliser la classe "Select" de Selenium WebDriver publiée par Maitreya. Désolé, mais je suis un peu perplexe à propos de la sélection du sexe dans la liste déroulante, pourquoi comparer 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é quel que soit votre choix (Homme/Femme).

3
Deepu

Google "sélection de l'élément Selenium Webdriver" Comment définir une option sélectionnée à l'aide du client Selenium WebDriver (Selenium 2.0) en 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 en haut 5, encore une fois pas Java mais l'API est très similaire.

3
Mene
WebElement selectgender = driver.findElement(By.id("gender"));
selectgender.sendKeys("Male");
3
Anand Somani
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
Anand Somani

Pour trouver un élément de liste déroulante particulier:

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

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

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

Pour le sélectionner par le biais du texte visible affiché lorsque vous cliquez dessus:

gender.selectByVisibleText("Male");

Pour le sélectionner par index (à partir de 0):

gender.selectByIndex(1);
1
Rishi369
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 GOOGLE LOGIN PAGE pour tester l'option de sélection. L'exemple ci-dessus consistait à rechercher et à sélectionner la langue "philippine" dans la liste déroulante. Je suis sûr que cela résoudra le problème.

0
MKod