12

为AngularJS编写Protractor E2E测试处理页面对象模型的正确方法是什么?我觉得我应该将它们写在单独的文件中(如 homepage.js、page2.js 等),然后根据需要以某种方式将它们包含到模块等规范中。但是,我不知道如何注入它们。将不胜感激任何建议。谢谢!

4

4 回答 4

21

将它们保存在单独的文件中,并使用 Noderequire来拉入您需要的任何帮助程序或页面对象。看看这个超级简单的例子:https ://github.com/juliemr/ng-page-e2e/blob/master/test/angularsite_test.js#L2

于 2013-12-12T19:40:06.263 回答
4

你试过星盘吗?它是 Protractor 之上的一个 PageObject 实现,可以指导您的结构:https ://github.com/stuplum/astrolabe

在那里您可以看到推荐的结构是每个文件一个页面对象。

例如:singInPage.js

var Page = require('astrolabe').Page;

module.exports = Page.create({

   url: { value: 'http://<somesite>.com/signin' },

   username: { get: function() { return this.findElement(this.by.input('username')); } }, // finds an input element with the name 'username'
   submit:   { get: function() { return this.findElement(this.by.id('submit')); } }       // finds an element with the id 'submit'
});

它使测试用例甚至页面对象的编写变得非常紧凑和可读。

于 2014-02-23T16:02:59.370 回答
0

恐怕在使用页面对象进行测试时没有共同的标准。您可以在量角器的问题中找到几个建议:https ://github.com/angular/protractor/issues/401和https://github.com/angular/protractor/issues/78

为了我的需要,我在我的开源项目中创建了非常简单的页面对象,请参阅:https ://github.com/9ci/angle-grinder/pull/124

您还可以在https://github.com/juliemr/ng-page-e2e/tree/master/test中找到非常有趣的实现

于 2014-02-19T11:14:53.170 回答
0

您应该将它们保存在单独的文件中,是的。

在你的量角器referenceConf.js(用于启动量角器的配置)中,你应该写:

specs: ['<your_path>/test/pages/*Test.js']

在这种情况下,< protractor 将使用掩码*Test.js (loginPageTest.js, homePageTest.js)从 dir "/test/pages" 启动所有文件

于 2013-12-12T07:30:50.350 回答