结合 Galen 和 Protractor 框架
Combining Galen and Protractor frameworks
故事
我们一直在广泛使用 Protractor 框架,并建立了相当大的测试代码库。我们也一直在关注 Page Object pattern 来组织我们的测试。
最近,我们开始使用 Galen framework 来填补 visual/layout/responsive 设计测试的空白。我们非常喜欢这个框架,并希望继续使用它。
目前最大的问题是页面对象。这两个框架都有自己定义页面对象的方式。
这是一个 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 结合在一起的重复页面对象和元素定位器?
鉴于现有信息,我看不到将其合并的直接方法。
但是,Galen and Protractor 在 Github 上可用,而且我认为 aligning/forking/modifying 对您的需求没有任何更大的障碍。
我看到的最好的机会是为 Galen 框架做出贡献,并将其 GalenPages.js
扩展为量角器页面对象的映射功能。尽管该 .js 文件中有 600 多行代码,但在合理的努力下似乎是可行的。
至少 to open an issue in the Galen GitHub project 在那个方向上的努力肯定是值得的。
故事
我们一直在广泛使用 Protractor 框架,并建立了相当大的测试代码库。我们也一直在关注 Page Object pattern 来组织我们的测试。
最近,我们开始使用 Galen framework 来填补 visual/layout/responsive 设计测试的空白。我们非常喜欢这个框架,并希望继续使用它。
目前最大的问题是页面对象。这两个框架都有自己定义页面对象的方式。
这是一个 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 结合在一起的重复页面对象和元素定位器?
鉴于现有信息,我看不到将其合并的直接方法。
但是,Galen and Protractor 在 Github 上可用,而且我认为 aligning/forking/modifying 对您的需求没有任何更大的障碍。
我看到的最好的机会是为 Galen 框架做出贡献,并将其 GalenPages.js
扩展为量角器页面对象的映射功能。尽管该 .js 文件中有 600 多行代码,但在合理的努力下似乎是可行的。
至少 to open an issue in the Galen GitHub project 在那个方向上的努力肯定是值得的。