0

在巴士预订网站 www.redbus.in 我必须选择旅程日期...

它将如何使用 Selenium WebDriver 完成?

4

4 回答 4

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();

在此处输入图像描述

我希望它会起作用(我没有在我的机器上尝试过)

编辑-我

我已经在我的机器中尝试了以下逻辑,它工作正常。

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();
于 2013-09-25T15:36:45.133 回答
0

在 Selenium 中有多种方法可以做到这一点。一些网页提供了一个选项来选择年和月,就像我们在 Windows 中所做的那样。像 REDBUS.in 这样的一些网页只有 Next 和 Previous 按钮来选择年份和月份。我正在编写一个健壮但通用的方法,该方法将适用于所有类型的日历事件。

  1. 获取日历的 XPath。
  2. 通过将当前 WebElement 值与您的预期值进行比较,导航到所需的年份和月份。到达 Calendar 元素后,您可以使用 Year 和 Month 的 Text 值。
  3. 获取该年份和月份的列表中的所有 td 元素。
  4. 循环遍历元素并在您的预期日期与列表中的元素匹配时单击。

您可能必须针对特定要求应用您的逻辑,但这种获取日期的逻辑将始终有效。

于 2016-11-24T06:29:40.580 回答
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;
            }
        }
于 2016-11-10T09:36:08.787 回答
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");
于 2016-04-11T19:44:38.447 回答