从selenium java webdriver中的下拉列表中选择一个值

时间:2013-07-29 11:04:13

标签: java selenium-webdriver webdriver ui-automation

如何使用xpath使用selenium java webdriver从下拉列表中选择一个值? 根据下拉列表中选择的选项,会显示字段。因此我需要在其中输入值。我的问题是我在下拉列表中选择选项后没有得到字段。经过很长一段时间后出现,表示出现错误

4 个答案:

答案 0 :(得分:1)

您可以点击下拉菜单并等待选项显示,然后您可以点击该选项。

Select select = new Select(driver.findElement(By.id("drop_down_id")));

select.selectByIndex(`index_value_of_option`);

答案 1 :(得分:1)

Jyotsna ......你的剧本需要等到场出现。为此,您需要使用任何等待条件。

隐式等待

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

或睡眠状况

Thread.sleep(2000);

或者您可以使用Fluent等待(根据我的建议最好的)

public WebElement fluentWait(final By locator) {
    Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
            .withTimeout(30, TimeUnit.SECONDS)
            .pollingEvery(5, TimeUnit.SECONDS)
            .ignoring(NoSuchElementException.class);

    WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
        public WebElement apply(WebDriver driver) {
            return driver.findElement(locator);
        }
    });

    return  foo;
};

fluentWait函数返回找到的web元素。从fluentWait上的文档:Wait接口的实现,可以动态配置其超时和轮询间隔。每个FluentWait实例定义等待条件的最大时间量,以及检查条件的频率。此外,用户可以将等待配置为在等待时忽略特定类型的异常,例如在搜索页面上的元素时的NoSuchElementExceptions。您可以获得详细信息here

在您的情况下使用`fluentWait如下:

WebElement textbox = fluentWait(By.id("textbox"));

答案 2 :(得分:0)

用于打开浏览器,加载URL并从下拉列表中选择值的示例语句

static WebDriver driver;
System.setProperty("webdriver.ie.driver","C:\\(Path)\\IEDriverServer.exe");
driver = new InternetExplorerDriver();
driver.manage().window().maximize();

driver.get("EnterURLHere");          
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);

Select value1 = new Select(driver.findElement(By.id("LocateId")));    
value1.selectByVisibleText("ValueToBeSelected");    //Select Character from dropdown list

答案 3 :(得分:0)

您可以添加等待,以便解决延迟加载的问题。

driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);

Thread.sleep(2000);

要从下拉菜单中进行选择,可以通过多种方式进行选择:

Select dropdown = new Select(driver.findElement(By.id(""))); // By id
dropdown.selectByVisibleText(""); // By Visible text
dropdown.selectByIndex(1); // By index