如何清除在日历框中输入的默认值并发送新的出生日期

时间:2018-07-14 17:05:01

标签: java selenium automation cucumber bdd

我想在日历框中发送密钥,但该框中有一个默认值

我试图在sendKeys之前清除它,但是它不起作用

我的代码:

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

请帮助我清除框

HTML代码:

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

1 个答案:

答案 0 :(得分:0)

您可以尝试代替Actions

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

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

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

或使用JavaScript:

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