javascript - 我需要使用 Protractor 初始化 Spec 文件中的页面对象吗?

标签 javascript selenium protractor pageobjects

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

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

官方 Protractor 风格指南建议这样做。它似乎为每个测试的页面创建一个唯一的对象。这样做有什么好处吗?

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

最佳答案

用自己风格的方式还是不错的。

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

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

现在我正在使用 typescript /Protractor 组合。新风格指南更有意义。

但这两种风格在功能上都与您自己的风格完美配合。 :)

关于javascript - 我需要使用 Protractor 初始化 Spec 文件中的页面对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50157004/

相关文章:

python - 如何在 Beautifulsoup Python 中实现 xpath 替代方案的跟随兄弟轴

python - XPath:在另一个 DIV 中获取给定条件的文本

javascript - React 中的 HOC 是否不鼓励这样做?

javascript - 为动态创建的 JQuery 进度条设置值

python - Selenium Python 如何从 <div> 获取文本(html 源)

selenium - 使用 Protractor 方便记录

testing - Protractor 测试的动态浏览器分辨率

angularjs - 如何运行 Protractor

javascript - 使用 JSON 将分类数据从 SQL 导入到 C3.js

c# - 动态设置 Iframe 的 Src 属性,同时保持跨浏览器兼容性