Javascript Can';t使用量角器正确执行页面对象模式
我一直在尝试在页面对象模式中调整我的测试代码。但这件事让我很为难 我有以下代码: 这是我的页面对象文件 这是我的规范文件 当我评论台词时Javascript Can';t使用量角器正确执行页面对象模式,javascript,jasmine,protractor,Javascript,Jasmine,Protractor,我一直在尝试在页面对象模式中调整我的测试代码。但这件事让我很为难 我有以下代码: 这是我的页面对象文件 这是我的规范文件 当我评论台词时 var preenchePsafe = dvr.findElement(by.id('global-search')); var opcaoPsafe = dvr.findElement(by.css('#search > ul > li:nth-child(1) > a')); preenchePsafe.sendKeys(pesq
var preenchePsafe = dvr.findElement(by.id('global-search'));
var opcaoPsafe = dvr.findElement(by.css('#search > ul > li:nth-child(1) > a'));
preenchePsafe.sendKeys(pesquisa);
opcaoPsafe.click();
并取消对该行的注释
//dvr.findElement(by.id('global-search')).sendKeys(pesquisa);
我的测试正常。但是我不想这样做,像这样使用页面对象是没有意义的。由于我是javascript和jasmine的初学者,我认为这可能是一个代码结构问题。
dvr
未在页面对象中定义。您需要一个:
var dvr = require('some/path.js')
在页面对象文件顶部或构造函数内部
另外,我建议您使用元素(by.css())
或$()
而不是dvr.findelelement(by)。例如:
// $() is the same as element(by.css())
var preenchePsafe = $('global-search'));
// You can chain element calls.
var opcaoPsafe = $('#search > ul').$$('li').get(1).$('a');
我猜你的堆栈跟踪的那部分说
TypeError:对象不是函数
因为在spec文件的beforeach函数中,您试图将pageObject实例化为pageObjectsModule函数的新实例,但pageObjectsModule在第一行中定义为对象
var pageObjectsModule = require('./page.js');
describe('PSafe Home', function () {
var pageObject;
beforeEach(function () {
pageObject = pageObjectsModule; // This line should fix the problem.
isAngularSite(false);
handlePromise = dvr.getAllWindowHandles();
});
it('Pesquisar PSafe', function () {
dvr.get('http://home.psafe.com/');
pageObject.pesquisarPsafe('PSafe');
});
});
或者,您可以执行以下操作:
var pageObject = require('./page.js'); // define the pageObject object as soon as you require it.
describe('PSafe Home', function () {
// var pageObject;
beforeEach(function () {
// pageObject = new PageObjectsModule(); // now you don't need this line
isAngularSite(false);
handlePromise = dvr.getAllWindowHandles();
});
it('Pesquisar PSafe', function () {
dvr.get('http://home.psafe.com/');
pageObject.pesquisarPsafe('PSafe');
});
});
你好,谢谢你的帮助。下面是我所做的:TypeError:无法调用undefinedright的方法'pesquisarPsafe',抱歉。您还应该删除声明
var pageObject的行代码>我已经在回答中解决了这个问题。我以前看到过,我得到的是:TypeError:Object function(){}在[Object Object]没有方法'pesquisarPsafe'。(C:\Users\QARJ\webstromprojects\dragratorpiloto\piloto.js:15:20)尝试将pageObject设置为全局:pageObject=require('./page.js')代码>而不是var pageObject=require('./page.js')在page.js
文件中的code>:将最后一行更改为module.exports=new PageObjects()
Hello,我已经在我的config.js中声明了dvr
。实际上,我正在测试一个非角度应用程序,我认为element
而findElement
仅适用于角度应用程序。对不对?
var pageObjectsModule = require('./page.js');
describe('PSafe Home', function () {
var pageObject;
beforeEach(function () {
pageObject = pageObjectsModule; // This line should fix the problem.
isAngularSite(false);
handlePromise = dvr.getAllWindowHandles();
});
it('Pesquisar PSafe', function () {
dvr.get('http://home.psafe.com/');
pageObject.pesquisarPsafe('PSafe');
});
});
var pageObject = require('./page.js'); // define the pageObject object as soon as you require it.
describe('PSafe Home', function () {
// var pageObject;
beforeEach(function () {
// pageObject = new PageObjectsModule(); // now you don't need this line
isAngularSite(false);
handlePromise = dvr.getAllWindowHandles();
});
it('Pesquisar PSafe', function () {
dvr.get('http://home.psafe.com/');
pageObject.pesquisarPsafe('PSafe');
});
});