Как дождаться ввода полного имени в текстовое поле в транспортире - PullRequest
0 голосов
/ 08 января 2019

Я ввожу текст в текстовое поле с помощью клавиш отправки, но не дожидаюсь полного ввода текста и нажимаю кнопку «Далее», чтобы текст не был написан полностью. Как решить эту проблему?

Я ввожу случайное имя, используя функцию даты и добавляя константу перед этим, как показано. Теперь, когда он входит через sendkeys, в первый раз он вводится полностью как a45, но во второй раз он входит как a и нажимает кнопку «Далее», следовательно, тестовый пример терпит неудачу.

Как ждать транспортиру, чтобы текст полностью написан?

var text = 'a' + date.getHours(); + date.getMinutes();

element.sendKeys(text);
element.click();

Ожидаемые результаты: a345

Факт: a

Может ли кто-нибудь помочь мне в этом случае и подсказать, как заставить транспортир ждать полного написания текста и затем нажимать кнопку "Далее"?

Ответы [ 5 ]

0 голосов
/ 10 января 2019

У вас уже есть несколько хороших ответов, но если они не сработали, одна вещь, которая помогла мне в предыдущем проекте, - это разбить строку и ввести символ за символом.

text.split('').forEach(char => {
  element.sendKey(char);
});
0 голосов
/ 10 января 2019

Запись в асинхронном режиме / ожидание. Установка browser.sleep просто добавит время к вашему тесту, не зная, правильное ли значение. Вместо этого вы можете использовать browser.wait, который будет запрашивать условие или значение времени ожидания (в данном случае 5 секунд). Условие, которое мы собираемся выполнить, это если значение атрибута равно тексту.

Примечание: я изменил element, поскольку это относится к глобальному объекту на someButton и someTextBox.

const text = 'a' + date.getHours(); + date.getMinutes();

// send the text    
await someTextBox.sendKeys(text);

// poll for a condition to be true or to timeout of 5 seconds
await browser.wait(async () => {
  // keep checking until the value attribute reflects the entered keys
  return (await someTextBox.getAttribute('value')) === text ;
}, 5000);  

await someButton.click();
0 голосов
/ 09 января 2019

попробуйте это

var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();
var text = 'a' + hour + min;

, а затем подождите, пока элемент будет вставлен

browser.driver.sleep(500);
element.sendKeys(text);
element.click();
0 голосов
/ 09 января 2019

Вам необходимо добавить ожидание в свои действия, чтобы дождаться выполнения обещания.

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

await elem.clear();
await elem.sendKeys(keys);
return (await elem.getAttribute('value')) === keys;
0 голосов
/ 09 января 2019
var date = new Date();
var msg ='a' + date.getHours() + date.getMinutes();

await element.sendKeys(await msg);
await elemnet.click();

Попробуйте использовать async / await. Для ref https://github.com/angular/protractor/blob/master/docs/async-await.md

Надеюсь, что приведенные выше данные помогут вам.

удалите ; из date.getHours(); в своем коде, чтобы получить то, что вы ожидаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...