获得“类型错误:下拉是不是一个函数”试图量角器
我得到“类型错误使用类时:下拉不尝试做以下的某一功能:获得“类型错误:下拉是不是一个函数”试图量角器
/*
* Dropdown.js
*/
var __container;
function Dropdown(el) {
__container = el;
}
Dropdown.prototype = {
constructor: Dropdown,
getOptions: function() { return __container.element.all(by.css('option')); },
// my other prototype methods
}
-
/*
* PageObject.js
*/
var Dropdown = require('Dropdown');
var PageObject() {}
PageObject.prototype = {
constructor: PageObject,
myDd: new Dropdown(element(by.css('select')),
//my other prototype methods which do work
};
-
/*
* spec.js
*/
var PageObject = require('PageObject');
describe('Test my page', function() {
it('should test the dropdown', function() {
browser.get(mypage);
var pageObject = new PageObject();
expect(pageObject.myDd.getOptions().isPresent()).toBe(true);
});
});
为@ 11684提到的 - 你忘了导出下拉列表和PageObject类和require('Dropdown');
返回未定义。量角器运行在node.js上,因此您需要填补CommonJS模块的空白。此外,如果你想要求其不与NPM安装的模块你有他们使用相对路径等等,而不是
var PageObject = require('PageObject');
你需要做的是这样
var PageObject = require('./pages/PageObject');
var Dropdown = require('../helpers/Dropdown');
等
目标并使用commonJS模块在节点环境中导出模块,您需要将它们导出为导出对象上设置的一组属性/方法,或者可以将构造函数直接指定给它,以便直接在所需模块上提供它
// in Dropdown
module.exports = Dropdown;
// in PageObject
module.exports = PageObject;
如果您打算使用更多的Node.js在您的测试,你应该多读一些有关与CommonJS的模块https://nodejs.org/docs/latest/api/modules.html工作和node.js的本身一般。将推荐检查什么从ES6你已经可以使用http://node.green/让你的测试更有组织和可读性
/我刘海的头靠在墙上,当然我没有做... ...是的,我做了,我为PageObject做了它,但忘记了Dropdown,谢谢其他信息,我会检查出来。 – Machtyn
Cheers Machtyn , 很高兴有帮助。 –
在哪一行发生错误?我想'myDd:new Dropdown(element(by.css('select')),'但也许你可以添加这个潜在的重要信息。 – 11684
你是如何导出Dropdown的?换句话说,需要'知道在哪里可以找到它?不应该用'define'或'exports'做些什么吗?你只是使用RequireJS吗?是否需要你使用另一个框架或库的一部分?其中? – 11684