2016-01-28 29 views
2

我似乎被困在页面对象的构造中。 我读了很多关于页面对象的文档,并知道它们包含了两两件事:量角器页面对象问题

  • 元素都存在一个页面上
  • 功能与页面

当我检查例如互动我发现这些元素是在每个页面对象的开始处定义的。 在测试中,pageobject是通过require导入的。 但我看到的问题是,当需求发生时,对象不存在。 有没有另一种方法来解决这个问题,而不必在页面加载时做一个require?

谢谢inadvance。 问候

回答

6

有一个新的量角器风格指南来了(目前在审查中),它应该清楚了很多东西,特别是Page对象的创建和需要的部分。这是目前的草案:

关于你的问题,首先,在页面对象需要被定义为功能,宣称在构造函数中的页面对象元素:

var QuestionPage = function() { 
    this.question = element(by.model('question.text')); 
    this.answer = element(by.binding('answer')); 
    this.button = element(by.className('question-button')); 

    this.ask = function(question) { 
    this.question.sendKeys(question); 
    this.button.click(); 
    }; 
}; 

module.exports = QuestionPage; 

然后,需要你的页面对象在测试套件的顶部:

var QuestionPage = require('./question-page'); 

describe('My Test', function() { 
    ... 
}); 

实例化测试套件里面的页面对象:

describe('My Test', function() { 
    var questionPage = new QuestionPage(); 

    // specs 
}); 
1

@ alecxe的答案是实心的,虽然就个人而言,我更喜欢实例关闭正是如此的module.export:

... 
module.exports = new QuestionPage(); 

因此,你需要只在你的测试中需要它,而不是在你的测试中实例化它。只要有可能,我觉得脚手架应该放在页面对象中。

+0

这是一个好点,好的捷径,谢谢 – Homewrecker