Дождитесь условия JavaScript в Nightwatch. js - PullRequest
1 голос
/ 05 апреля 2020

Я новичок в Nightwatch. js и перенесу некоторые тесты из библиотеки WD. js. Отличная особенность WD. js - это .waitForConditionInBrowser(), которая ожидает, что произвольный фрагмент JavaScript будет правдивым. Однако я не могу понять, как взаимодействовать с JavaScript таким образом в Nightwatch. js, или, если это вообще возможно (после просмотра документов). Вот пример того, что я хочу сделать:

Допустим, я загружаю страницу, где примерно через 3 секунды my_js_var становится 5. В WD. js это будет выглядеть так (wait max 5 секунд):

.get(my_page_url)
.waitForConditionInBrowser('my_js_var === 5', 5000)
// continue if my_js_var === 5 within 5 s

Я даже пытался сделать что-то более грязное в Nightwatch, но я, вероятно, неправильно понимаю, как вообще работает взаимодействие со страницей JS:

.url(my_page_url)
.pause(5000)
.execute(function() {
    return (my_js_var === 5);
})
// continue if my_js_var === 5 within 5 s

Но он просто продолжается независимо от того, что возвращено, и неясно, куда возвращается результат.

Есть ли надлежащая функция waitFor в Nightwatch, и если нет, то как мне выполнить базовые c утверждения для оцененных JavaScript код?

1 Ответ

2 голосов
/ 06 апреля 2020

Это было какое-то время, но я обычно делал что-то вроде этого:

exports.command = function(callback) {
  var self = this;
  this.timeoutsAsyncScript(5000, function() {
    this.executeAsync(function(done) {
        if(my_js_var === 5) {
          return my_js_var === 5
        }
        else {
          done();
        }
      },
      [], 
      function(result) {
        if(typeof(callback) === "function") {
          callback.call(self, result);
        }
      });
  });
  return this;
};

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

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