Search code examples
javaseleniumautomationcucumberbdd

How to clear the default value entered in calendar box and send a new date of birth


I want to sendKeys in the calendar box but there is a default value in that box

I tried to clear it before sendKeys but it is not working

My code:

Actions actions = new Actions(driver);
                            actions.moveToElement(driver.findElement(By.xpath("//*[@id='dateOfBirth']")));
                            actions.click();
                            actions. clear();
                            Thread.sleep(3000);     
                            actions.sendKeys("07-12-2018");
                            actions.sendKeys(Keys.TAB);
                        actions.build().perform();

Please help me how to clear the box

HTML Code:

<input type="text" value="07-14-1993" id="dateOfBirth" class="react-datepicker-ignore-onclickoutside">

Solution

  • Instead of Actions you can try:

    WebElement input = driver.findElement(By.xpath("//*[@id='dateOfBirth']"));
    input.click();
    input.clear();
    input.sendKeys("07-12-2018");
    input.sendKeys(Keys.TAB); // I don't know why you need TAB, but since you have it in your code
    

    or

    Actions actions = new Actions(driver);
    actions.moveToElement(driver.findElement(By.xpath("//*[@id='dateOfBirth']")));
    actions.click();
    actions.build().perform();
    WebElement input = driver.findElement(By.xpath("//*[@id='dateOfBirth']"));
    input.clear();
    input.sendKeys("07-12-2018");
    input.sendKeys(Keys.TAB);
    

    or

    Actions actions = new Actions(driver);                        
    actions.moveToElement(driver.findElement(By.xpath("//*[@id='dateOfBirth']")));
    actions.click();
    actions.sendKeys(Keys.BACK_SPACE).sendKeys(Keys.BACK_SPACE).sendKeys(Keys.BACK_SPACE).sendKeys(Keys.BACK_SPACE).sendKeys(Keys.BACK_SPACE).sendKeys(Keys.BACK_SPACE).sendKeys(Keys.BACK_SPACE).sendKeys(Keys.BACK_SPACE).sendKeys(Keys.BACK_SPACE).sendKeys(Keys.BACK_SPACE);
    Thread.sleep(3000);     
    actions.sendKeys("07-12-2018");
    actions.sendKeys(Keys.TAB);
    actions.build().perform();
    

    or use JavaScript:

    WebElement input = driver.findElement(By.xpath("//*[@id='dateOfBirth']"));
    JavascriptExecutor js=(JavascriptExecutor) driver;
    js.executeScript("arguments[0].setAttribute(value, '07-12-2018')", input);