Невозможно получить доступ к URL страницы в NightwatchJS - PullRequest
0 голосов
/ 17 сентября 2018

Мне не удалось получить URL во время тестовых прогонов с перерывами.Позвольте мне дать вам фон: при нажатии кнопки на странице она переходит на следующую страницу.Во-первых, я хотел бы проверить URL во время моего теста.Ниже приведен фрагмент кода, который я использовал для получения URL-адреса с текущей страницы.

1.Нативная реализация nightwatch для утверждения URL

assertUrlContains(text) {
  this.assert.urlContains(text);
  return this;
}

2.Кроме того, попытался получить URL-адрес, используя api.url с шаблоном обещания.

getCurrentUrl() {
      return new Promise((resolve) => {
        this.api.url((result) => {
          resolve(result.value);
        });
      });
    }

Оба подхода имеют одинаковые проблемы, и ниже приведена трассировка стека ошибки:

SEARCH RESULTS URL: null
 (node:12375) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'indexOf' of null
 (node:12375) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
✖ TypeError: Cannot read property 'indexOf' of null 

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

1 Ответ

0 голосов
/ 17 сентября 2018

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

  • Используйте API urlEquals для ночных часов, задокументированный здесь: http://nightwatchjs.org/api#assert-urlEquals

  • Вы можете выполнить команду javascript через ваш тестовый скрипт: window.location.href, чтобы получить URL окна и сохранить его в виде строки. Затем вы можете выполнить утверждение для этой строки

...