Comment sélectionner une valeur déroulante dans Selenium WebDriver à l'aide de Java
Je suis nouveau sur selenium , je travaille actuellement sur selenium webdriver je veux sélectionner une valeur dans la liste déroulante. L'id=periodId et l'option est nombreuse en ce que j'essaie de sélectionner les 52 dernières semaines.
Voici la balise Html:
<select id="periodId" name="period" style="display: none;">
<option value="l4w">Last 4 Weeks</option>
<option value="l52w">Last 52 Weeks</option>
<option value="daterange">Date Range</option>
<option value="weekrange">Week Range</option>
<option selected="" value="monthrange">Month Range</option>
<option value="yeartodate">Year To Date</option>
</select>
Veuillez me suggérer quelques façons de cliquer sur le menu déroulant.
J'ai essayé avec les lignes d'exemple ci-dessus mais j'obtiens une erreur telle que l'élément n'est pas actuellement visible et peut donc ne pas interagir avec Durée ou délai d'attente de la commande: 32 millisecondes le les valeurs déroulantes sont le format du widget jquery multiselect
11 answers
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");
Si vous voulez écrire tout en une seule ligne, essayez
new Select (driver.findElement(By.id("designation"))).selectByVisibleText("Programmer ");
En fait, select
sélectionne mais ne place pas les valeurs sélectionnées dans le champ respectif . Où se demandait l'extrait ci-dessous fonctionne parfaitement
driver.findElement(By.name("period")).sendKeys("Last 52 Weeks");
Comme discuté ci-dessus, nous devons implémenter Select Class dans Selenium et en outre, nous pouvons utiliser diverses méthodes disponibles comme :-
code pour sélectionnez le menu déroulant
Sélectionnez = Sélectionnez nouveau(pilote.findElement (Par.xpath ("//select [@id= 'periodId']));
code pour sélectionner l'option particauular
Sélectionnez.selectByVisibleText(52 dernières semaines);
Vous pouvez utiliser les méthodes suivantes pour gérer déroulant en sélénium.
- conducteur.selectByVisibleText("Texte");
- conducteur.selectByIndex(1);
- conducteur.selectByValue("prog");
Pour plus de détails, vous pouvez vous référer à http://www.codealumni.com/handle-drop-selenium-webdriver/ ce poste.
Cela vous aidera certainement beaucoup dans la résolution de vos requêtes.
D'accord avec la réponse de KodS. En outre, vous devez importer org.openqa.nium.soutien.interface.Sélectionnez; pour Sélectionner pour fonctionner.
WebDriver driver = new FirefoxDriver();
WebElement identifier = driver.findElement(By.id("periodId"));
Select select = new Select(identifier);
select.selectByVisibleText("Last 52 Weeks");
Je n'ai pas essayé dans Selenium, mais pour le test Galen, cela fonctionne,
Var liste = pilote.findElementByID ("periodID"); / / cela retournera élément web
Liste.cliquez sur (); / / cela ouvrira la liste déroulante.
Liste.typeText ("14w"); / / cela sélectionnera l'option"14w".
Vous pouvez essayer ceci dans le sélénium, le galen et le sélénium fonctionnant sont similaires.
Importez d'abord le paquet en tant que:
Importer l'organisation.openqa.nium.soutien.interface.Sélectionner;
Puis écrire en une seule ligne comme:
Nouvelle sélection (driver.findElement(By.id ("sampleid"))). selectByValue ("SampleValue");
Essayez ceci:
driver.findElement(By.name("period")).sendKeys("Last 52 Weeks");