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结合在一起的页面对象和元素定位器?
鉴于现有的信息,我看不到将其组合的直接方法。
然而,Galen和Protractor在 Github 上可用,并且我没有看到根据您的需要对齐/分叉/修改它们有任何更大的障碍。
我看到的最好的办法是为 Galen 框架做出贡献,并将其GalenPages.js映射功能扩展到量角器页面对象。尽管该 .js 文件中有 600 多行代码,但在合理的努力范围内似乎是可行的。
至少在 Galen GitHub 项目中朝这个方向提出问题肯定是值得的。
| 归档时间: |
|
| 查看次数: |
358 次 |
| 最近记录: |