使用Selenium在WebDriver中处理下拉菜单和多选


我们可以使用Selenium WebDriver中的Select类来处理多选下拉菜单。多选下拉菜单允许选择多个选项。

下面列出了处理多选下拉菜单的Select方法:

  • getOptions – 返回下拉菜单中所有选项的列表。

Select s = new Select(e);
List<WebElement> l = s.getOptions();
  • getFirstSelectedOption – 返回下拉菜单中选定的选项。如果有多个选项被选中,则只返回第一个项目。

Select s = new Select(e);
l = s. getFirstSelectedOption();
  • isMultiple – 返回布尔值,如果下拉菜单允许选择多个项目,则返回true。

Select s = new Select(e);
boolean l = s.isMultiple();
  • selectByIndex – 以参数形式传递要由下拉菜单选择的选项的索引。索引从0开始。

WebElement e = driver.findElement(By.id("slc"));
Select s = new Select(e);
s.selectByIndex(0);
  • selectByValue – 以参数形式传递要由下拉菜单选择的选项的value属性。下拉菜单中的选项应具有value属性,以便可以使用此方法。

WebElement e = driver.findElement(By.id("slc"));
Select s = new Select(e);
s.selectByValue("option 1");
  • deselectByVisibleText – 以参数形式传递要由下拉菜单取消选择的选项的可见文本。它仅适用于多选下拉菜单。

WebElement e = driver.findElement(By.id("slc"));
Select s = new Select(e);
s.deselectByVisibleText("Selenium");
  • deselectByIndex – 以参数形式传递要由下拉菜单取消选择的选项的索引。索引从0开始。它仅适用于多选下拉菜单。

WebElement e = driver.findElement(By.id("slc"));
Select s = new Select(e);
s.deselectByIndex(0);
  • deselectByValue – 以参数形式传递要由下拉菜单取消选择的选项的value属性。它仅适用于多选下拉菜单。

WebElement e = driver.findElement(By.id("slc"));
Select s = new Select(e);
s.deselectByValue("option 1");
  • selectByVisibleText – 以参数形式传递要由下拉菜单选择的选项的可见文本。

WebElement e = driver.findElement(By.id("slc"));
Select s = new Select(e);
s.selectByVisibleText("Selenium");
  • deselectAll – 取消选择下拉菜单中所有选定的选项。

WebElement e = driver.findElement(By.id("slc"));
Select s = new Select(e);
s.deselectAll();

多选下拉菜单具有一个select标签,其项目由option标签表示。

示例

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.support.ui.Select
public class MultiDrpDwn{
   public static void main(String[] args) {
      System.setProperty("webdriver.gecko.driver",
         "C:\Users\ghs6kor\Desktop\Java\geckodriver.exe");
      WebDriver driver = new FirefoxDriver();
      //implicit wait
      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
      //maximize browser
      driver.manage().window().maximize();
      //URL launch
      driver.get("https://tutorialspoint.com/selenium/selenium_automation_practice.htm");
      //identify dropdown
      WebElement d= driverfindElement(By.xpath("//select[@name='selenium_commands']"));

      //object of Select class
      Select s=new Select(d);
      //get options of dropdown in list
      List t =s.getOptions();
      System.out.println("Options are: ");
      for (WebElement i: t){
         System.out.println(i.getText());
      }
      //return true if multi-select dropdown
      Boolean b=s.isMultiple();

      System.out.println("Boolen value for drodown: "+ b);
      //select item by index
      s.selectByIndex(2);
      Thread.sleep(1000);
      //select item by visible text
      s.selectByVisibleText("Wait Commands");
      Thread.sleep(1000);
      //get first selected option in dropdown
      WebElement f = s.getFirstSelectedOption();
      System.out.println("First selected option is: "+ f.getText());
      //deselect option by index
      s.deselectByIndex(2);
      Thread.sleep(1000);
      //deselect all selected items
      s.deselectAll();
      driver.close();
   }
}

输出

更新于:2021年4月7日

15K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告