Sélénium - Action de sélection multiple

Parfois, nous serions dans une situation pour sélectionner deux ou plusieurs éléments dans une zone de liste ou une zone de texte. Pour comprendre la même chose, nous démontrerions une sélection multiple dans la liste en utilisant 'https://demos.devexpress.com/aspxeditorsdemos/ListEditors/MultiSelect.aspx'.

Exemple

Disons que nous voulons sélectionner 3 éléments dans cette liste comme indiqué ci-dessous -

Voyons comment coder pour cette fonctionnalité -

import java.util.List;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.interactions.Action;

public class webdriverdemo {

   public static void main(String[] args) throws InterruptedException {
   
      WebDriver driver = new FirefoxDriver();
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

      driver.navigate().to("http://demos.devexpress.com/aspxeditorsdemos/ListEditors/MultiSelect.aspx");

      //driver.manage().window().maximize();
      driver.findElement(By.id("ContentHolder_lbSelectionMode_I")).click();
      driver.findElement(By.id("ContentHolder_lbSelectionMode_DDD_L_LBI1T0")).click();
      Thread.sleep(5000);
      
      // Perform Multiple Select
      Actions builder = new Actions(driver);
      WebElement select = driver.findElement(By.id("ContentHolder_lbFeatures_LBT"));
      List<WebElement> options = select.findElements(By.tagName("td"));
      
      System.out.println(options.size());
      Action multipleSelect = 
         builder.keyDown(Keys.CONTROL).click(options.get(2)).click(options.get(4)).click(options.get(6)).build();
      
      multipleSelect.perform();
      driver.close();
   }
}

production

Lors de l'exécution du script, les éléments seraient sélectionnés comme indiqué ci-dessus et la taille de la zone de liste serait également imprimée dans la console.