Лучший способ запустить действие, пока ожидаемое условие не будет выполнено в Nightwatch.js?

Я автоматизирую часть веб-сайта, которая запускает работу, когда вы нажимаете кнопку. Состояние задания отображается на странице в другом поле, но не отправляется автоматически. Конечному пользователю необходимо нажать кнопку «Обновить» на странице, чтобы увидеть последний статус.

Что-то вроде этого

browser.expect.element('@status').text.to.equal('Done').before(10000);

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

Есть ли встроенный метод для выполнения каких-либо действий каждые [интервал здесь] до [условие истинно] или [истекло время ожидания] в Nightwatch? Я не хочу использовать жесткую паузу, так как работа может занять больше или меньше времени в зависимости от того, как себя чувствует сервер.


person EdgeCase    schedule 13.11.2020    source источник


Ответы (1)


Под другим полем вы подразумеваете iFrame, svg или, возможно, другую вкладку / окно? Вам не нужно вручную, есть возможность переключиться в другое окно со следующим:

Оконные ручки + SwitchTo:

command(windowNum){
   const result = browser.windowHandles();
   let handle = result.value[windowNum];
   browser.switchWindow(handle);
}

Обновить страницу

browser.refresh();

Я не верю, что в Nightwatch есть встроенный метод, но я уверен, что вы можете использовать цикл for и оператор if

person Vladislav Bulanov    schedule 15.02.2021