结合Galen和Protractor框架

时间:2017-11-17 21:36:42

标签: javascript selenium protractor pageobjects galen

故事

我们一直在广泛使用Protractor框架,并建立了一个相当大的测试代码库。我们也一直关注Page Object pattern来组织我们的测试。

最近,我们开始使用Galen framework来填补视觉/布局/响应式设计测试的空白。我们非常喜欢这个框架,并希望继续使用它。

目前最大的问题是Page Objects。两个框架都有自己的定义页面对象的方法。

以下是Protractor页面对象的示例:

var LoginPage = function () {
    this.username = element(by.id("username"));
    this.password = element(by.id("password"));

    this.loginButton = element(by.binding("buttonText"));
};

module.exports = new LoginPage();

并且,这是一个示例Galen页面对象:

this.LoginPage = $page("Login page", {
    username: '#username',
    password: '#password',
    loginButton: 'button[ng-click*=login]'
});

目前,我们正在重复定位器并重复自己 - 违反了DRY principle。而且,另一个后续问题是Galen目前仅支持“by css”,“by id”或“by xpath”定位技术 - 这意味着页面对象不会一对一地映射。

问题

有没有办法避免重复将Protractor和Galen结合在一起的页面对象和元素定位器?

1 个答案:

答案 0 :(得分:3)

鉴于可获得的信息,我没有看到直接的方法来组合它。

但是,G {{{{{{{{{{

我看到的最佳镜头是为Galen框架做出贡献,并将其Galen扩展为具有映射功能的Protractor Page Objects。虽然.js文件中有600多行代码,但在合理的努力下似乎是可行的。

在这方面至少Protractor肯定值得付出努力。