Дата отправки в Selenium Webdriver (Java) неверна
У меня есть небольшой скрипт, который отправляет дату в поле ввода с ID=bla.
@Then("^I fill in the date \"([^\"]*)\"$")
public void fill_date(String date) throws Throwable {
waitForElementPresent(By.id(bla));
driver.findElement(By.id(bla)).click();
driver.findElement(By.id(bla)).clear();
driver.findElement(By.id(bla)).sendKeys(date);
driver.findElement(By.id(Submitbutton).click();
}
Теперь, каждый раз, когда я запускаю его с, например, date=28-06-1985, он полностью портит дату и фактически отправляет "28-61-8590" вместо "28-06-1985". Излишне говорить, что мой тест не пройден, потому что дата не существует... Я также удалил Click and Clear перед отправкой даты, но, похоже, ничего не работает. Кроме того, удаление полос в данных (таким образом, отправка 28061985) ничего не делает.
Что я здесь не так делаю? Есть ли лучший способ заполнить поле ввода с датой?
2 ответа
Попробуйте отправить вашу дату в трех частях, как показано ниже:
String date1 = "28";
String date2 = "06";
String date3 = "1985";
waitForElementPresent(By.id(bla));
driver.findElement(By.id(bla)).click();
driver.findElement(By.id(bla)).clear();
driver.findElement(By.id(bla)).sendKeys(date1);
driver.findElement(By.id(bla)).sendKeys(date2);
driver.findElement(By.id(bla)).sendKeys(date3);
driver.findElement(By.id(Submitbutton).click()
Ввод текста по буквам помогает мне в таких случаях:
public void enterTextOneByOne(WebElement inputElement, String text){
for (char letter : text.toCharArray()) {
inputElement.sendKeys(CharBuffer.wrap(new char[]{letter}));
}
}
Добавление к предыдущему ответу. У меня была та же проблема этим утром. После разделения строки это работало для некоторых случаев. Но все равно не удалось в тех случаях, когда месяц начинается с 0. Когда я разбил строку следующим образом, это сработало. Мой разделитель был '/'.
String date1 = "05";
String date2 = "/06";
String date3 = "/1982";
driver.findElement(By.id(bla)).sendKeys(date1);
driver.findElement(By.id(bla)).sendKeys(date2);
driver.findElement(By.id(bla)).sendKeys(date3);
Выше логика работала для меня на всех комбинациях.