gpt4 book ai didi

javascript - 无法使用 Protractor 正确执行页面对象模式

转载 作者:行者123 更新时间:2023-12-02 16:44:51 25 4
gpt4 key购买 nike

我一直在尝试在页面对象模式中调整我的测试代码。但我在这方面遇到了一些困难。

我有以下代码:

这是我的页面对象文件

PageObjects = function() {

var preenchePsafe = dvr.findElement(by.id('global-search'));
var opcaoPsafe = dvr.findElement(by.css('#search > ul > li:nth-child(1) > a'));


this.pesquisarPsafe = function(pesquisa) {

//dvr.findElement(by.id('global-search')).sendKeys(pesquisa);
preenchePsafe.sendKeys(pesquisa);
opcaoPsafe.click();

};

};

module.exports = PageObjects;

这是我的规范文件

var pageObjectsModule = require('./page.js');

describe('PSafe Home', function () {
var pageObject;

beforeEach(function () {
pageObject = new pageObjectsModule();
isAngularSite(false);
handlePromise = dvr.getAllWindowHandles();
});

it('Pesquisar PSafe', function () {

dvr.get('http://home.psafe.com/');
pageObject.pesquisarPsafe('PSafe');

});

});

当我评论这些行时

 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 的初学者,我认为这可能是代码结构问题。

最佳答案

我猜你的堆栈跟踪部分说类型错误:对象不是函数

因为在规范文件的 beforeEach 函数中,您尝试将 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');

});

});

关于javascript - 无法使用 Protractor 正确执行页面对象模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27189968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com