Использование объекта pages в Nightwatch JS

Я использую Ночной дозор "0.8.6". Согласно документации на страницах, я создал pages/login.js file и добавьте каталог в файл конфигурации с помощью:

module.exports = {
  url: function() {
    return this.launchUrl;
  }
};

в документации упоминается this.api, но это не свойство клиента / браузера. видимо, доступно.

Я изменил существующий тест можно использовать:

module.exports = {
  'Login page has a login button' : function (browser) {
    browser
      .url(browser.page.login().url())
      .waitForElementVisible('body', 10000)
      .assert.containsText('button', 'SIGN IN')
      .end();
  }
}

тест теперь терпит неудачу. .url пытается открыть selenium с помощью data:,, вместо значения этого.launchUrl, который является localhost:3000.

объект страницы, по-видимому, оценивается в контексте теста входа в систему, поэтому это в объекте страницы должно иметь это.launchUrl. Погружаясь в источник, я вижу, что в миксе также есть объекты обертки страницы.

как я могу использовать правильно создать и использовать объект страницы в 0.8.6?

2 ответов


Я думаю, вы можете попробовать добавить один var для вызова логина.в JS страницы. вот так:

module.exports = {
  'Login page has a login button' : function (browser) {

    var LoginPage = browser.page.login();
        LoginPage.navigate();

        LoginPage
         .waitForElementVisible('body', 10000)
         .assert.containsText('button', 'SIGN IN')
         .end();
  }
}

Итак, согласно документам, которые вы должны: - "Каждый объект страницы должен находиться в отдельном файле, расположенном в определенной папке. Nightwatch считывает объекты страницы из папки (или папок), указанной в page_objects_path свойства конфигурации."

вы настроили свой ?

после этого вы можете создать файл js в этой папке, например:

module.exports = function(client) {
  return {
    gotoUrl: function() {
      return client
        .url(client.launchUrl);
    },
  };
};

и затем вы можете написать свой тест например:

module.exports = {
  'Login page has a login button': (browser) => {
    browser.page.pagescriptname()
      .gotoUrl()
      .waitForElementVisible('body', 10000)
      .assert.containsText('button', 'SIGN IN')
      .end();
  }
}

убедитесь, что вы настроили launch_url в своем ночном дозоре.JS-файл (или это можно изменить динамически (что я сделал для своего проекта) через .