Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Selenium Webdriver从日历中选择值_Selenium - Fatal编程技术网

如何使用Selenium Webdriver从日历中选择值

如何使用Selenium Webdriver从日历中选择值,selenium,Selenium,在一个公交车预订网站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.

在一个公交车预订网站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();

我希望它能工作(我没有试过我的机器)

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

请尝试使用下面的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();

您也可以直接发送日期或时间:

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

您也可以直接发送日期或时间:

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

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


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


在硒中有多种方法可以做到这一点。 有些网页提供了一个选择年份和月份的选项,就像在windows中一样。有些网页,如REDBUS.in,只有“下一步”和“上一步”按钮可选择年份和月份。我正在写一个健壮但通用的方法,它将适用于所有类型的日历事件

  • 获取日历的XPath
  • 通过将当前WebElement值与预期值进行比较,导航到所需的年份和月份。到达日历元素后,可以使用年和月的文本值
  • 将该年度和月份的所有td元素都列在一个列表中
  • 循环遍历元素,并在预期日期与列表中的元素匹配时单击

  • 您可能需要为特定的需求应用逻辑,但这种获取日期的逻辑总是有效的。

    在Selenium中有多种方法可以做到这一点。 有些网页提供了一个选择年份和月份的选项,就像在windows中一样。有些网页,如REDBUS.in,只有“下一步”和“上一步”按钮可选择年份和月份。我正在写一个健壮但通用的方法,它将适用于所有类型的日历事件

  • 获取日历的XPath
  • 通过将当前WebElement值与预期值进行比较,导航到所需的年份和月份。到达日历元素后,可以使用年和月的文本值
  • 将该年度和月份的所有td元素都列在一个列表中
  • 循环遍历元素,并在预期日期与列表中的元素匹配时单击

  • 您可能需要为特定的需求应用逻辑,但获取日期的逻辑始终有效。

    您尝试过什么吗?此代码正在选择当前日期。但我必须选择未来的日期。datedriver.findElement(By.className(“wd”)。单击();您尝试过什么吗?此代码正在选择当前日期。但我必须选择一个未来日期。datedriver.findElement(By.className(“wd”)。单击();它不起作用了。但是我尝试了以下代码:driver.findElement(By.xpath(“td[text()='wd']//a[value=27]”);你能帮我吗?在你的代码//xpath中遗漏的代码中,试一下如下。driver.findElement(By.xpath(“//td[text()='Sept']/../../..//a[text()='27']))。单击();它应该选择9月27日,我已经试过了&它在我的机器上工作。看到答案了吗?我添加的逻辑正在我的机器中工作。是的,它正在工作……但是需要一个小的澄清。但是为什么我们在代码中使用这个:/../。。为什么不选择此项?在xpath中,从需要使用/(的子项)转到父项。。在firebug中查看该日历的结构,以便您能够理解。如果我的答案有效,请接受并投票。它无效。但是我尝试了以下代码:driver.findElement(By.xpath(“td[text()='wd']//a[value=27]”);你能帮我吗?在你的代码//xpath中遗漏的代码中,试一下如下。driver.findElement(By.xpath(“//td[text()='Sept']/../../..//a[text()='27']))。单击();它应该选择9月27日,我已经试过了&它在我的机器上工作。看到答案了吗?我添加的逻辑正在我的机器中工作。是的,它正在工作……但是需要一个小的澄清。但是为什么我们在代码中使用这个:/../。。为什么不选择此项?在xpath中,从需要使用/(的子项)转到父项。。在firebug中查看该日历的结构,以便您能够理解。如果我的答案有效,请接受并投票。