Итак, моя идея состояла в том, чтобы создать функцию, которая пытается найти элемент за x секунд. Если элемент не представлен (быть в состоянии писать на элементе) и / или не может отправить какие-либо ключи к элементу, тогда подождите. Если он прошел заданные секунды ожидания (et c 10 se c), то он должен выдать исключение.
На данный момент я сделал:
it('enter email', function (done) {
browser
.then(() => browser.wait(piPage.getEmailValue().isPresent(), 10000))
//getEmailValue = element(by.id('email').getAttribute("value");
.then((isPresent) => {
assert.equal(isPresent, true, 'Email failed entering.')
})
.then(() => piPage.enterEmail("test@test.com"))
.then(() => done());
});
, который фактически находит элемент и отправить ключи, если значение представлено. ОДНАКО кажется, что 10-секундный browser.wait, кажется, не применяется, и вместо этого он немедленно запускается без ожидания вообще. Мне пришлось вручную добавить
browser.driver.sleep(10000).then(function() {
console.log('waited 10 seconds');
});
, но это не то, что я хочу.
Я хотел бы сделать так, чтобы browser.wait обнаружил, что элемент представлен / может отправляться до x секунд, а затем, если элемент найден, мы продолжаем, иначе, в основном, генерируем исключение.