我正在使用页面对象编写一些Protractor测试用例。但是我无法直接从Pageobject文件中使用元素,在spec文件中。
可能我错过了一些JS的细微差别,因为我没有在JS中写过这么多。
我想使用Pageobject中定义的一些元素,如:
var PageObject = function()
{
var loginUsername = element(by.id('loginusername'));
//other methods
};
module.exports = PageObject;
将在我的spec文件中使用,如下所示:
var PageObject = require('./pageObject.page.js');
describe( ' Login page ', function(){
it('type something in the usernamefield', function(){
var pageObject = new PageObject();
pageObject.get();
pageObject.loginUsername.sendKeys('Test');
});
});
使用方法(例如get和其他方法)工作正常,但直接使用元素会导致一些未定义的错误。
我试图从这样的东西中复制,据说它应该起作用。
答案 0 :(得分:1)
你缺少的东西,
使用此关键字
将您的变量绑定到pageObject.page.js中的对象
var PageObject = function()
{
this.loginUsername = element(by.id('loginusername'));
......
};
module.exports = PageObject;
在Spec中首先获得真实的应用并做实际的工作
it('type something in the usernamefield', function(){
browser.get('"https://....');
var pageObject = new PageObject();
pageObject.loginUsername.sendKeys('Test');
});
这对我来说很完美,