selenium 下拉框处理

web应用中有很多时候我们会遇见<select></select>标签的下列列表框,一般是无法直接去操作下列列表中的选择的。selenium webdriver 提供了专门操作select下拉列表的方法。

selectByIndex(2); //通过下拉列表中选项的索引选中第三项,在java中索引从0开始,不同语言,略有差异。

selectByValue("value"); //操作option标签中属性值。

selectByVisibleText(“value")//参数为option的text值。

getOptions();//返回select标签中的所有选项,返回类型式list集合,可以遍历操作所有选项。

public static void main(String[] args) {
        System.setProperty("webdriver.firefox.bin", "D:\Mozilla Firefox\firefox.exe");
        WebDriver driver = new FirefoxDriver();
        // 以下是选择w3shool的select标签教程未实例 操作下拉列表
        driver.get("http://www.w3school.com.cn/tags/tag_select.asp");
        String winhand = driver.getWindowHandle();
        // 获取当前句柄
        System.out.println(driver.getWindowHandle() + "句柄");
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        // 设置等待页面元素
        driver.findElement(By.xpath(".//*[@id='maincontent']/div[1]/p[2]/a")).click();
        // 点击页面中的【亲自试一试】按钮
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        // 设置等待页面元素
        Set<String> handles = driver.getWindowHandles();
        for (String j : handles) {
            if (j.equals(winhand) == false) {
                driver.switchTo().window(j);
                // 切换到新开的窗口
                driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
                // 设置等待页面元素
                driver.switchTo().frame("i");
                WebElement el = driver.findElement(By.tagName("select"));
                Select sel = new Select(el);
                sel.selectByValue("saab");
                // 操作下列列表中内容为saab。
//                List<WebElement> SelectLinks = driver.findElements(By.tagName("option"));
//                for (WebElement k : SelectLinks) {
//                    k.click();
//
//                }
                // 该处的for可以循环选择下列列表中的所有内容。
            }
        }

    }
原文地址:https://www.cnblogs.com/linxinmeng/p/6946341.html