结合Galen和Protractor框架

ale*_*cxe 9 javascript selenium pageobjects protractor galen

故事

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

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

现在最大的问题是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();
Run Code Online (Sandbox Code Playgroud)

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

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

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

问题

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

Ern*_*gli 4

鉴于现有的信息,我看不到将其组合的直接方法。

然而,GalenProtractor在 Github 上可用,并且我没有看到根据您的需要对齐/分叉/修改它们有任何更大的障碍。

我看到的最好的办法是为 Galen 框架做出贡献,并将其GalenPages.js映射功能扩展到量角器页面对象。尽管该 .js 文件中有 600 多行代码,但在合理的努力范围内似乎是可行的。

至少在 Galen GitHub 项目中朝这个方向提出问题肯定是值得的。