Перейти к содержимому

Фотография

В полях ввода не всегда пишет нужный текст полностью

Selenium Webdriver Java

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Hayasa

Hayasa

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Vahe Sahakyan

Отправлено 14 января 2016 - 10:13

Привет всем. Пишу тест с помощю selenium webdriver, язык java. Есть сайт, в котором нужно вводить определенные тексты в поля для ввода. При запуске теста, driver находит эти поля и вводит текст, но иногда в одном из полей, где текст около 250 символов, текст вводит не полностю и проходит к следующей строке. Помогите решить эту проблему. Вот кусок кода. 

 

WebDriver driver = new ChromeDriver();
driver.get("localhost:8080/#/");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);


driver.findElement(By.xpath(".//*[@id='saveLunchModal']/div/div/form/div[2]/div[2]/input")).sendKeys("text 1");
driver.findElement(By.xpath(".//*[@id='saveLunchModal']/div/div/form/div[2]/div[3]/input")).sendKeys("text 2");

driver.findElement(By.xpath(".//*[@id='saveLunchModal']/div/div/form/div[2]/div[4]/input")).sendKeys("text 3");


  • 0

#2 X-NoNAME

X-NoNAME

    Новый участник

  • Members
  • Pip
  • 24 сообщений
  • ФИО:Казаков Иван
  • Город:Москва


Отправлено 14 января 2016 - 10:25

Я делаю так:

waitCustom.withTimeout(10, TimeUnit.SECONDS)
            .withMessage("Не удалось заполнить поле")
                .until(MyConditions.keysSendedToField(field,"Трям-Трям-Трям"));
public class MyConditions{
 
public static ExpectedCondition<Boolean> keysSendedToField(final WebElement element, final String text) {
    return new ExpectedCondition<Boolean>() {
      @Override
      public Boolean apply(WebDriver driver) {
        if(element.isDisplayed()){
            element.clear();
            element.sendKeys(text);
            L.l(element.getAttribute("value")+" must be = "+text, 20);
            if(element.getAttribute("value").equals(text))return true;
        }
        return false;
      }

      @Override
      public String toString() {
        return "keys "+text+"sended to field ";
      }
    };
  }

}

Сообщение отредактировал X-NoNAME: 14 января 2016 - 10:27

  • 0

Мои проекты: http://erudit.me http://erudit.1-1.su


#3 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


Отправлено 14 января 2016 - 11:27

 

 

в одном из полей, где текст около 250 символов

Не совсем понятно: 250 - это длина текста, который вы пытаетесь туда ввести, либо это максимальная длина поля?

 

В первом случае, если вы пытаетесь ввести больше, чем позволяют ограничения поля - вы и вручную больше максимума не введете (в большинстве случаев, если учтены все возможные способы ввода).

Тут надо бы не кусок кода вашего теста, а код того элемента, в котором у вас регулярно значения не полностью вводятся.


  • 0

#4 Hayasa

Hayasa

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Vahe Sahakyan

Отправлено 14 января 2016 - 11:54

Я делаю так:
 

waitCustom.withTimeout(10, TimeUnit.SECONDS)
            .withMessage("Не удалось заполнить поле")
                .until(MyConditions.keysSendedToField(field,"Трям-Трям-Трям"));
public class MyConditions{
 
public static ExpectedCondition<Boolean> keysSendedToField(final WebElement element, final String text) {
    return new ExpectedCondition<Boolean>() {
      @Override
      public Boolean apply(WebDriver driver) {
        if(element.isDisplayed()){
            element.clear();
            element.sendKeys(text);
            L.l(element.getAttribute("value")+" must be = "+text, 20);
            if(element.getAttribute("value").equals(text))return true;
        }
        return false;
      }

      @Override
      public String toString() {
        return "keys "+text+"sended to field ";
      }
    };
  }

}

Спасибо, но мне не совсем понятно.Я не программист, только начал изучать selenium и использую простые команды драйвера.


  • 0

#5 Hayasa

Hayasa

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Vahe Sahakyan

Отправлено 14 января 2016 - 12:03

 

 

 

в одном из полей, где текст около 250 символов

Не совсем понятно: 250 - это длина текста, который вы пытаетесь туда ввести, либо это максимальная длина поля?

 

В первом случае, если вы пытаетесь ввести больше, чем позволяют ограничения поля - вы и вручную больше максимума не введете (в большинстве случаев, если учтены все возможные способы ввода).

Тут надо бы не кусок кода вашего теста, а код того элемента, в котором у вас регулярно значения не полностью вводятся.

 

250 символов, это длинна текста. Максимальную длинна поля 255. Тесты каждий раз проходят по разному, то все ок, то пишет 10-20 символов и переходит к следующей строке, то пишет около 100 символов и переходит к следующей строке. Код элемента по моему тут не причем, одинаковые inputtext элементы.


  • 0

#6 Hayasa

Hayasa

    Новый участник

  • Members
  • Pip
  • 21 сообщений
  • ФИО:Vahe Sahakyan

Отправлено 14 января 2016 - 12:25

Спасибо за помощь. Поставил явное ожидание для проблемного поля ввода. Проверил около 50 раз, все ок. Видоизменений код теста.

 

WebDriver driver = new ChromeDriver();
driver.get("localhost:8080/#/");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);


driver.findElement(By.xpath(".//*[@id='saveLunchModal']/div/div/form/div[2]/div[2]/input")).sendKeys("text 1");

WebDriverWait wait = new WebDriverWait(driver,30);
wait.until(ExpectedConditions.elementToBeClickable(By.xpath(".//*[@id='saveLunchModal']/div/div/form/div[2]/div[3]/input")));
driver.findElement(By.xpath(".//*[@id='saveLunchModal']/div/div/form/div[2]/div[3]/input")).sendKeys("text 2");

driver.findElement(By.xpath(".//*[@id='saveLunchModal']/div/div/form/div[2]/div[4]/input")).sendKeys("text 3");


  • 0



Темы с аналогичным тегами Selenium Webdriver, Java

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных