Дата отправки в 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);

Выше логика работала для меня на всех комбинациях.

Другие вопросы по тегам