如何使用Selenium和Java从Bootstrap Glyphicon日期选择器中选择日期

时间:2019-01-25 06:00:01

标签: java selenium selenium-webdriver datepicker webdriver

以下是我的日期选择器的html DOM。在此输入字段中不可编辑。DOM中没有其他用于日期选择器的'tr''td'标签。

<form>
<div class="input-group date" id="datetimepicker1">
    <input type="text" id="accFromDateId" class="form-control" placeholder="DD/MMM/YYYY" data-i18n="BillsView.CustomerSearch.Placeholder.DateFormat">
    <span class="input-group-addon"> <span class="glyphicon glyphicon-calendar"></span> </span> </div></form>

此输入字段仅从日期选择器获取日期。 我尝试了以下代码。但这不起作用

硒脚本:

WebElement date=driver.findElement(By.name("accFromDateId"));
date.sendKeys("01232019"); 
date.submit();

2 个答案:

答案 0 :(得分:1)

1)应该使用“ ID”查找代替“名称”

 var driver = new ChromeDriver();
 driver.Navigate().GoToUrl("demo.html");
 IWebElement date = driver.FindElement(By.Id("accFromDateId"));
 date.SendKeys("01232019");
 date.Submit();

2)另一种方法是使用日期选择器弹出窗口。在下面找到一个选择jquery datepicker的示例代码

var driver = new ChromeDriver();
driver.Navigate().GoToUrl("https://jqueryui.com/datepicker/");
driver.SwitchTo().Frame(driver.FindElement(By.XPath("//iframe[@class='demo-frame']")));
IWebElement date = driver.FindElement(By.Id("datepicker"));
date.Click();
driver.FindElementByLinkText("24").Click();

答案 1 :(得分:0)

您的问题尚不清楚,为什么您会发现输入字段也是不可编辑的。要通过<input>标签发送字符序列,即 date 作为 25 / JAN / 2019 ,您可以使用以下解决方案:

WebElement myDate = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@class='form-control' and @id='accFromDateId']")));
myDate.clear();
myDate.sendKeys("25/JAN/2019"); 
myDate.submit();