我们一直在广泛使用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结合在一起的页面对象和元素定位器?
答案 0 :(得分:3)
鉴于可获得的信息,我没有看到直接的方法来组合它。
但是,G {{{{{{{{{{
我看到的最佳镜头是为Galen框架做出贡献,并将其Galen扩展为具有映射功能的Protractor Page Objects。虽然.js文件中有600多行代码,但在合理的努力下似乎是可行的。
在这方面至少Protractor肯定值得付出努力。