繁体   English   中英

使用以下命令从Selenium Java Webdriver下拉菜单中选择一个值

[英]select a value from drop down in selenium java webdriver using

如何使用XPath使用Selenium Java WebDriver从下拉列表中选择一个值? 根据下拉菜单中选择的选项,显示字段。因此我不需要在其中输入值。 我的问题是在下拉菜单中选择选项后我没有得到字段。长时间显示后,意味着出现错误

您可以单击下拉菜单,等待选项显示,然后从中单击选项。

要么

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

select.selectByIndex(`index_value_of_option`);

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上的文档中:等待接口的实现,可以动态配置其超时和轮询间隔。 每个FluentWait实例都定义了等待条件的最长时间,以及检查条件的频率。 此外,用户可以配置等待以在等待时忽略特定类型的异常,例如在页面上搜索元素时的NoSuchElementExceptions。 您可以在这里找到详细信息

在您的情况下,`fluentWait的用法如下:

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

用于打开浏览器,加载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

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

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 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM