如何使用 selenium java webdriver 使用 xpath 从下拉列表中选择一个值?根据下拉列表中选择的选项,会出现字段。因此我不需要在其中输入值。我的问题是在下拉列表中选择选项后我没有得到这些字段。经过很长一段时间后,它出现,意味着出现错误
问问题
12530 次
4 回答
1
您可以单击下拉菜单并等待选项显示,然后您可以从中单击选项。
或者
Select select = new Select(driver.findElement(By.id("drop_down_id")));
select.selectByIndex(`index_value_of_option`);
于 2013-07-29T12:16:57.450 回答
1
Jyotsna... 您的脚本需要等到该字段出现。为此,您需要使用任何等待条件。
隐式等待
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
或睡眠状况
Thread.sleep(2000);
或者你可以使用 Fluent wait (根据我的建议最好的)
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。您可以在这里获得详细信息
在您的情况下,`fluentWait 的用法如下:
WebElement textbox = fluentWait(By.id("textbox"));
于 2013-07-29T18:10:38.713 回答
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
于 2018-10-05T09:49:43.030 回答
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
于 2015-11-05T14:51:10.780 回答