Нужно ли инициализировать объект страницы в моем файле Spec с помощью Protractor? - PullRequest
0 голосов
/ 03 мая 2018

Это стиль, который у меня сейчас. Довольно простая объектная модель страницы.

var loginPage = require('../pages/loginPage');
var homePage = require('../pages/homePage');

describe('Login', function () {

  it('Valid Login should successfully reach the home page, with valid page title.', function () {
    browser.driver.get("https://dev.mysite.com/");
    loginPage.login('TestUser', 'TestPassword');
    homePage.getHeaderText();
    //expect header text to equal "My header"
  });
});

Официальное руководство по стилю транспортира предлагает сделать это следующим образом. Создается впечатление, что объект создается для страницы, уникальной для каждого теста. Есть ли преимущество в этом?

var loginPage = require('../pages/loginPage');
var homePage = require('../pages/homePage');

describe('Login', function () {
var loginPageObj = new loginPage();
var homePageObj = new homePage();

  it('Valid Login should successfully reach the home page, with valid page title.', function () {
    browser.driver.get("https://dev.mysite.com/");
    loginPageObj.login('TestUser', 'TestPassword');
    //or should homePageObj be initialized here,
    //right before it is first used?
    homePageObj.getHeaderText();
    //expect header text to equal "My header"
  });
});

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Все еще хорошо использовать способ, которым обладает ваш собственный стиль.

И почему официальный гид так говорит, это поможет сделать тестовые файлы независимыми. Если вы создаете экземпляр как объекты, вы можете хорошо определить свою область видимости. И лучшее понимание / удобочитаемость кода.

Я тоже следую твоему стилю ранее.

Сейчас я работаю с набором машинописи / транспортира. Где новый стиль руководства дает больше смысла.

Но оба стиля функционально работают совершенно без проблем с вашим собственным стилем. :)

0 голосов
/ 03 мая 2018

Вам не нужно заходить на начальную домашнюю страницу в спецификации. Вы можете вернуть его из loginPageObj.login («TestUser», «TestPassword»); Объект страницы входа в систему будет выглядеть примерно так:

var loginPage = function() {
this.txtUserName = element(by.xpath('xpath'));
this.txtPassword = element(by.xpath('xpath'));
this.login = function(strUsername,strPassword) {
        var self = this;
        this.txtUserName.isPresent().then(function(status){
            if(status){
                self.txtUserName.sendKeys(strUsername);
                self.txtPassword.sendKeys(strPassword);
                self.btnLogin.click();
            }
        });
        return require('../Pages/HomePage.js');     
    }}
module.exports = new loginPage();

Использование его в спецификации теста

var homePage = loginPage.login(browser.params.username, browser.params.password);
homePage.getHeaderText();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...