在巴士预订网站www.redbus.in中,我必须选择旅行日期......
如何使用Selenium WebDriver完成?
答案 0 :(得分:3)
试试下面的xpath
String month="Sept";
String date="28";
"//td[text()='"+month+"']/../..//a[text()='"+date+"']"
它将选择9月28日
给出月份&日期根据您的要求。
以下逻辑用于在月份之间导航
driver.findElement(By.cssSelector("td.next")).click();
driver.findElement(By.cssSelector("td.previous")).click();
我希望它能起作用(我没试过我的机器)
修改-I 强>
我在我的机器上尝试了以下逻辑,它工作正常。
driver=new FirefoxDriver();
driver.get("http://www.redbus.in");
//selecting date of journey
driver.findElement(By.id("calendar")).click(); driver.findElement(By.xpath("//td[text()='Sept']/../..//a[text()='27']")).click();
//selecting return jouney
driver.findElement(By.id("calendar1")).click(); driver.findElement(By.xpath("//td[text()='Oct']/../..//a[text()='3']")).click();
答案 1 :(得分:0)
您也可以直接发送日期或时间:
WebElement dateBox = driver.findElement(By.xpath("//form//input[@name='bdaytime']"));
//Fill date as mm/dd/yyyy as 09/25/2013
dateBox.sendKeys("09252013");
//Press tab to shift focus to time field
dateBox.sendKeys(Keys.TAB);
//Fill time as 02:45 PM
dateBox.sendKeys("0245PM");
答案 2 :(得分:0)
以下是我们在门户网站上使用的日期选择器字段的屏幕截图,下面是我们用来选择日期选择器上突出显示日期的代码。
if (!TestHelpers.IsElementPresent(By.Id(""), timeout, driver, verificationErrors))
return false;
if (driver.FindElement(By.Id("")).Enabled)
{
if (driver.FindElement(By.Id("")).Text == "")
{
driver.FindElement(By.Id("")).Click();
if (!TestHelpers.IsElementPresent(By.CssSelector("table.ui-datepicker-calendar > tbody > tr > td.ui-datepicker-days-cell-over.ui-datepicker-today > a.ui-state-default.ui-state-highlight"), timeout, driver, verificationErrors))
return false;
driver.FindElement(By.CssSelector("table.ui-datepicker-calendar > tbody > tr > td.ui-datepicker-days-cell-over.ui-datepicker-today > a.ui-state-default.ui-state-highlight")).Click();
if (driver.FindElement(By.Id("")).TagName == string.Empty)
return false;
}
}
答案 3 :(得分:0)
在Selenium中有多种方法可以做到这一点。 有些网页提供了选择年份和月份的选项,就像我们在Windows中一样。像REDBUS.in这样的网页只有Next和Previous按钮来选择年份和月份。我正在编写一个强大而通用的方法,它将适用于所有类型的Calendar事件。
您可能必须根据特定要求应用逻辑,但这种获取日期的逻辑始终有效。