首页 > 解决方案 > 我是否需要使用量角器在我的 Spec 文件中初始化页面对象?

问题描述

这是我现在的风格。一个相当简单的页面对象模型。

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"
  });
});

标签: javascriptseleniumprotractorpageobjects

解决方案


使用自己风格的方式仍然很好。

而官方指南之所以这么说,是因为它有助于使测试文件独立。如果您实例化为对象,您可以很好地定义您的范围。以及更好的代码理解/可读性。

我以前也遵循你自己的风格。

现在我正在使用打字稿/量角器组合。新风格指南更有意义的地方。

但是这两种风格在功能上都与你自己的风格完全没有问题。:)


推荐阅读