我有 3 级继承类: 第一个类继承ElementArrayFinder,第二个类继承第一个类。这是我的代码:
一级:
var util = require('util');
var ElementArrayFinder = require('C:/Users/Lilia.Sapurina/AppData/Roaming/npm/node_modules/protractor/lib/element').ElementArrayFinder;
var psComponent = function() {};
util.inherits(psComponent, ElementArrayFinder);
module.exports = psComponent;
二级:
var util = require('util');
var psComponent = require('../lib/psComponent');
var psDateTimePicker = function() {};
util.inherits(psDateTimePicker, psComponent);
psDateTimePicker.prototype.getField = function() {
return element(by.xpath('//div[1]/table/tbody/tr[2]/td[1]/div/input'));
};
psDateTimePicker.prototype.getButton = function() {
return element(by.css('td > a.b-button.b-button_only_icon'));
};
exports.psDateTimePicker = new psDateTimePicker();
我可以通过这种方式在我的代码中使用它:
fdescribe('lala', function () {
var psDateTimePicker = require('../lib/psDateTimePicker').psDateTimePicker;
beforeEach(function(){
browser.get('ng-components/examples/ps-date-time-picker.html');
});
it('test', function () {
expect(psDateTimePicker.getField().getAttribute("value")).toEqual(6);
});
});
但我想制作全局界面并使代码构造看起来像:
fdescribe('lala', function () {
var psComponents = require('../lib/psComponent');
beforeEach(function(){
browser.get('ng-components/examples/ps-date-time-picker.html');
});
it('test', function () {
expect(psComponents.psDateTimePicker.getField().getAttribute("value")).toEqual(6);
});
});
有人知道我该如何组织吗?我尝试使用 getInstanceOf(),但它不起作用。而且也不是很方便。
最佳答案
如果您想为所有组件创建一个命名空间,您只需创建一个额外的模块来负责:
// psComponents.js
module.exports = {
psDateTimePicker: require('../lib/psDateTimePicker').psDateTimePicker,
psAnotherComponent: require('../lib/psAnotherComponent').psAnything
};
并按照您想要的方式使用它:
var psComponents = require('../lib/psComponents');
expect(psComponents.psDateTimePicker.getField().getAttribute("value")).toEqual(6);
这比您尝试做的事情简单得多 - 尝试从父级访问子级 - 没有简单的方法来实现它,并且通常没有理由这样做。原型(prototype)只是创建新的独立实例的样板,它们不应该相互连接。与原型(prototype)继承几乎相同:您只需扩展该样板,但子实例和父实例将保持独立。
关于angularjs - Protractor :类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32004348/