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é.
Utilisation -
new Select(driver.findElement(By.id("gender"))).selectByVisibleText("Germany");
Bien sûr, vous devez import org.openqa.Selenium.support.ui.Select;
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 :)
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();
}
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).
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.
WebElement selectgender = driver.findElement(By.id("gender"));
selectgender.sendKeys("Male");
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();
}
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);
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.