如何使用Selenium Webdriver从Calendar中选择一个值

时间:2013-09-25 11:47:48

标签: selenium

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

如何使用Selenium WebDriver完成?

4 个答案:

答案 0 :(得分:3)

试试下面的xpath

String month="Sept";
String date="28";
"//td[text()='"+month+"']/../..//a[text()='"+date+"']"

它将选择9月28日 enter image description here

给出月份&日期根据您的要求。

以下逻辑用于在月份之间导航

driver.findElement(By.cssSelector("td.next")).click();
driver.findElement(By.cssSelector("td.previous")).click();

enter image description here

我希望它能起作用(我没试过我的机器)

修改-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)

以下是我们在门户网站上使用的日期选择器字段的屏幕截图,下面是我们用来选择日期选择器上突出显示日期的代码。

IMAGE CLICK ME

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事件。

  1. 获取日历的XPath。
  2. 通过将当前WebElement值与预期值进行比较,导航到所需的年份和月份。到达Calendar元素后,可以使用Year和Month的Text值。
  3. 获取该年份和月份的列表中的所有td元素。
  4. 循环浏览元素,并在预期日期与列表中的元素匹配时单击。
  5. 您可能必须根据特定要求应用逻辑,但这种获取日期的逻辑始终有效。