在巴士预订网站 www.redbus.in 我必须选择旅程日期...
它将如何使用 Selenium WebDriver 完成?
试试下面的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();
我希望它会起作用(我没有在我的机器上尝试过)
编辑-我
我已经在我的机器中尝试了以下逻辑,它工作正常。
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();
在 Selenium 中有多种方法可以做到这一点。一些网页提供了一个选项来选择年和月,就像我们在 Windows 中所做的那样。像 REDBUS.in 这样的一些网页只有 Next 和 Previous 按钮来选择年份和月份。我正在编写一个健壮但通用的方法,该方法将适用于所有类型的日历事件。
您可能必须针对特定要求应用您的逻辑,但这种获取日期的逻辑将始终有效。
下面是我们在门户网站上使用的日期选择器字段的屏幕截图,下面是我们用来选择日期选择器上突出显示的日期的代码。
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;
}
}
您也可以直接发送您的日期或时间:
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");