2013-12-12 78 views
11

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

回答

0

你应该把它们放在单独的文件中,是的。

而在你的量角器referenceConf.js(config来启动与量角器),你应该写:

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

在这种情况下<量角器将从目录“/测试/页”推出的所有文件与面具* Test.js(loginPageTest.js,homePageTest.js)

+0

不幸的是,我还不知道如何在单个文件中启动测试,而无需更改配置中的“规格”。另外,如果你想在IDE中调试测试,这篇文章可能会有帮助:[如何在Webstorm中调试量角器的测试](http://stackoverflow.com/questions/20137109/how-to-debug-angular-protractor-tests在webstorm) –

+0

我昨晚发现,因为我试图实现这一点,你不能在这样的规格中包含页面对象。每个文件独立于其他文件运行。我最终围绕节点的需求构建了一个系统。 – wlingke

+0

@wlingke我在这里有一个类似的问题。你能告诉我你做了什么来解决问题吗? – Shimu

4

你用星盘试过了吗?它是量角器顶部的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' 
}); 

它使测试用例的编写和偶数页对象非常紧凑和可读性。