如何在Selenium WebDriver中使用日期选择器选择特定日期

时间:2018-10-18 07:14:10

标签: java html selenium selenium-webdriver

我正在使用Selenium WebDriver并使用Java。我想从屏幕下方显示的日期选择器中选择日期范围。

当前,我能够选择日期选择器并更改月份选择,但无法选择日期值(即-12/10/2018)

日期选择器选择

X

这是我编写的Java代码:

    driver.findElement(By.linkText("Leave")).click();
    driver.findElement(By.linkText("Apply Leave")).click();
    Thread.sleep(2000);
    driver.findElement(By.id("LeaveStartDate")).click();
    driver.findElement(By.className("next")).click();
    driver.findElement(By.className("day")).sendKeys("12");
    driver.findElement(By.id("LeaveEndtDate")).click();
    driver.findElement(By.className("next")).click();
    driver.findElement(By.className("day")).sendKeys("12/11/2018");

}
}

5 个答案:

答案 0 :(得分:1)

您需要找到显示“开始日期”的框,然后将key发送到该元素,而不是日期选择器本身。

driver.findElement(By.id("LeaveStartDate")).sendKeys("12/10/2018");

然后对结束日期执行相同的操作。

答案 1 :(得分:1)

谢谢你们对我的查询的回答...我已经尝试过Xpath及其对我的工作

详细信息:

使用以下代码,我一直在“日期选择器”

中选择开始和结束日期
driver.findElement(By.id("LeaveStartDate")).click();
    driver.findElement(By.className("next")).click();

    driver.findElement(By.xpath("html/body/div[8]/div[1]/table/tbody/tr[3]/td[2]")).click();
    driver.findElement(By.id("LeaveSEndDate")).click();
    driver.findElement(By.xpath("html/body/div[9]/div[1]/table/tbody/tr[3]/td[5]")).click();

结论::Xpath是无法执行“ Jquery Date Picker” 的硒Java代码的用户的解决方案。

答案 2 :(得分:0)

要在更改月份后选择日期,您可以创建一个列表并将所有日期存储在列表中。然后使用“ .getText()”一个接一个地获取文本,并尝试将结果日期与预期日期进行比较,然后单击它。这样,您可以使用日期值参数化脚本。

答案 3 :(得分:0)

import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.Test;

public class dateTimePicker {

    WebDriver driver;

    @Test
    public void dateTimePicker() {

        System.setProperty("webdriver.chrome.driver",
                "C://Chrome driver exe path");
        driver = new ChromeDriver();

        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

        driver.get("http://jqueryui.com/resources/demos/datepicker/other-months.html");

        // click to open the date time picker calendar.
        WebElement dateBox = driver.findElement(By.id("datepicker"));

        // click to open the date time picker calendar.
        dateBox.click();

        // Fill date as mm/dd/yyyy as 10/6/2019
        dateBox.sendKeys("10/6/2019");

        // Press tab to shift focus to time field
        dateBox.sendKeys(Keys.TAB);

        // close the driver
        driver.close();
    }
}

答案 4 :(得分:0)

您可以尝试使用此实用程序...

public void selectDate(String date){  //Here any date you can give 
    WebElement eval=driver.findElement(By.xpath("//div[contains(@class,'datepicker-days')]/table/tbody"));
    List<WebElement> alldates = eval.findElements(By.tagName("td"));
    for(WebElement cell:alldates){
         String day=cell.getText();
            if (cell.getText().contains(date)) {           
                 driver.findElement(By.xpath("//div[contains(@class,'datepicker-days')]/table/tbody/tr/td[text()='"+day+"']")).click();
                 break;
                }
            }
    }

注意:如果要从另一个月份选择日期,只需导航至该月份,此后即可使用此实用程序。