gpt4 book ai didi

javascript - 在 Protractor 中定义页面对象的规范方法

转载 作者:可可西里 更新时间:2023-11-01 01:53:48 24 4
gpt4 key购买 nike

我们一直在使用 Page Object pattern有一会儿。它绝对有助于组织端到端测试,并使测试更具可读性和简洁性。

作为Using Page Objects to Organize Tests Protractor 文档页面向我们展示,我们将每个页面对象定义为一个函数,并使用 new 来“实例化”它:

"use strict";

var HeaderPage = function () {
this.logo = element(by.css("div.navbar-header img"));
}

module.exports = HeaderPage;

用法:

"use strict";

var HeaderPage = require("./../po/header.po.js");

describe("Header Look and Feel", function () {
var header;

beforeEach(function () {
browser.get("/#login");
header = new HeaderPage();
});

it("should show logo", function () {
expect(header.logo.isDisplayed()).toBe(true);
});

});

但是,最近在 Protractor: Angular testing made easy Google 测试博客帖子,我注意到页面对象被定义为一个对象:

var angularHomepage = {
nameInput : element(by.model('yourName')),
greeting : element(by.binding('yourName')),
get : function() {
browser.get('index.html');
},
setName : function(name) {
this.nameInput.sendKeys(name);
}
};

这两种引入Page Objects的方式有什么区别呢?我应该更喜欢其中之一吗?

最佳答案

归根结底,我认为这是个人喜好的问题。

是的,您可以使用构造函数模式并在每个测试套件中实例化一个单例...是的,您可以使用上面的简单对象文字...是的,您可以使用工厂函数...

通过“类”(无论是伪语法还是 ES2015 语法)使用继承来构造代码与通过 mixins 扩展的对象相比,在应用程序开发中通常存在更广泛的争论,更不用说 e2e 测试了!

最主要的是在您的测试套件中进行清晰、一致的实践,并尽可能提高代码的可重用性。

关于javascript - 在 Protractor 中定义页面对象的规范方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31466489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com