Частично вставленная строка с методом .sendKeys () - PullRequest
3 голосов
/ 22 марта 2019

У меня есть модальное окно с некоторыми текстовыми полями в нем.Я использовал для ввода текста, используя className, чтобы получить все поля формы и индексирования текстовых полей.В настоящее время модал изменился, и dev предоставил мне идентификатор для каждой коробки.Я пытаюсь просто ввести текст и нажать кнопку «Отправить», но иногда случается, что строка вставляется частично.

Допустим, я хочу ввести строку "System1", но иногда WebDriver вводит "Sys" или "Sy" и т. Д., А затем выполняет щелчок

. Я пыталсянайдите элемент с помощью идентификатора, XPATH ... , но дело в том, что я могу видеть, как текст находится на поле, поэтому элемент расположен правильно

Есть и другая проблема.Чтобы убедиться, что текстовое поле содержится после метода .senKeys (), я помещаю и утверждаю, что якобы получает текст из текстового поля через метод .getText () и сравнивает его со строкой, которую я передаю методу main, но яНа этом этапе я получаю нулевое значение, и я вижу, как функционально WebDrivers вводит что-то, завершено или нет. Обратите внимание, что я использую один и тот же объект WebElement для обоих методов .sendKeys () и .getText ()

Вот код, который я запускаю, простой AF:

//Locating the TextBox
@FindBy(how = How.ID, using = "text")
public WebElement nameField;


public void introducirEnCampoNombre(String name) {
   //nameField.clear();
    nameField.sendKeys(name);

    try {
        Thread.sleep(5000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    String xpectedString = nameField.getText();
    Assert.assertEquals(name, xpectedString);
}

Вот соответствующий код HTML:

<form id="systemForm" action="/ik-conf/systemAction/save" method="POST">
            <input id="id" name="id" type="hidden" value="">
            <input id="parentNode.id" name="parentNode.id" type="hidden" value="1">

            <div class="row">
                <div class="left lv-text-label">
                    <label for="text" class="right-label inline">Nombre(*):</label>
                </div>
                <div class="right lv-text-input">
                    <input id="text" name="text" autofocus="autofocus" validation="/ik-conf/system/nameValidation" class="ikconf-fieldset width_100x100" type="text" value="">
                </div>
            </div>
            <div class="row">
                    <div class="left">
                        <label for="description" class="right-label inline">Descripción:</label>
                    </div>
                    <div class="right">
                        <textarea id="description" name="description" style="margin-bottom:0px;" class="width_100x100 z-label" rows="3" cols="40"></textarea>
                    </div>
                </div>

Итак, как я сказал выше, код идет для кнопки отправки(который находится в следующем методе), прежде чем строка будет вставлена ​​правильно.При отладке я могу проверить, что строка правильная, а затем - вторая проблема.Я пытаюсь снова найти тот же элемент с другим именем ВНУТРИ метода, но с тем же результатом, .getText () возвращает меня null

Надеюсь, что кто-то может пролить немного света сюда.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 22 марта 2019

Линия, которую вы используете сейчас,

String xpectedString = nameField.getText();

Вернет innerHTML этого элемента ввода. Я не уверен, что текст, введенный в это поле ввода, входит в innerHTML, возможно, в атрибут «value». Поэтому попробуйте определить его как

String xpectedString = nameField.getAttribute(“value”);
0 голосов
/ 22 марта 2019

Я видел это раньше.Я думаю, что это связано с проблемой загрузки страницы ... как страница загружается в точку, а затем завершает загрузку, вызывая обрыв текста в зависимости от времени вещей.Потенциально вы можете сделать несколько вещей.

  1. Вы можете увидеть, устарел ли INPUT.Если это так, дождитесь устаревания и затем введите текст.
  2. Другой вариант - поместить цикл .sendKeys() и проверку и удалить утверждение.Повторяйте цикл до 3 раз, каждый раз повторяя текст до тех пор, пока он не будет успешным.Если достигнуто максимальное количество попыток, не пройдите тест.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...