Angular2量角器类型错误:this.flow_u.getSchedulingFrame_u不是函数
尝试使用量角器在Angular2应用程序上运行集成测试: 量角器.conf.jsAngular2量角器类型错误:this.flow_u.getSchedulingFrame_u不是函数,angular,jasmine,protractor,Angular,Jasmine,Protractor,尝试使用量角器在Angular2应用程序上运行集成测试: 量角器.conf.js exports.config = { baseUrl: 'http://localhost:3000', seleniumAddress: 'http://localhost:4444/wd/hub', specs: [ 'src/app/e2e/contact.e2e.js' ], framework: 'jasmine', useAllAngular2AppRoots: tru
exports.config = {
baseUrl: 'http://localhost:3000',
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: [
'src/app/e2e/contact.e2e.js'
],
framework: 'jasmine',
useAllAngular2AppRoots: true
};
describe('App', function(){
it('should render the contact section', function() {
browser.get('/');
expect(true).toBe(true);
});
});
我的测试文件:contact.e2e.js
exports.config = {
baseUrl: 'http://localhost:3000',
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: [
'src/app/e2e/contact.e2e.js'
],
framework: 'jasmine',
useAllAngular2AppRoots: true
};
describe('App', function(){
it('should render the contact section', function() {
browser.get('/');
expect(true).toBe(true);
});
});
我得到的错误是:
Message:
Failed: this.flow_.getSchedulingFrame_ is not a function
Stack:
TypeError: this.flow_.getSchedulingFrame_ is not a function
at promise.Promise.addCallback_ (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:651:16)
at promise.Promise.then (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:592:15)
at ManagedPromise.invokeThen_ (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1193:12)
at ManagedPromise.resolve_ (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1147:16)
at /Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1083:14
at Task.Deferred.fulfill (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1432:7)
at TaskQueue.onTaskComplete_ (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2995:26)
at subQ.once (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2888:33)
at TaskQueue.emit (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/protractor/node_modules/selenium-webdriver/lib/events.js:64:21)
at TaskQueue.executeNext_ (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2882:12)
From: Task: Run it("should render the contact section") in control flow
at Object.<anonymous> (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/jasminewd2/index.js:79:14)
From asynchronous test:
Error
at Suite.<anonymous> (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/src/app/e2e/contact.e2e.js:11:3)
at Object.<anonymous> (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/src/app/e2e/contact.e2e.js:10:1)
at Module._compile (module.js:556:32)
at Object.Module._extensions..js (module.js:565:10)
at Module.load (module.js:473:32)
at tryModuleLoad (module.js:432:12)
奇怪的是,这只发生在我的mac电脑上,当我在jenkins服务器上通过docker运行测试时,它运行良好。
非常感谢您的帮助。
提前谢谢
更新
我的量角器不是全局的,我正在运行的量角器版本是:版本4.0.14 开发依赖性:量角器4.0.11使用selenium webdriver 2.53.1。在项目中,selenium webdriver 2.47.0作为开发依赖项,这是不寻常的 stacktrace:错误
selenium webdriver/lib/goog/./webdriver/promise.js
是可疑的,因为在^4.0.11中量角器使用的selenium webdriver节点模块中不存在/lib/goog/
。我怀疑你用的是旧版本的量角器
- 量角器4.0.11使用selenium webdriver 2.53.1-没有
lib/goog/
- 量角器2.5.1使用selenium webdriver 2.47.0-确实有一个文件夹have
lib/goog/
- 量角器1.8.0使用selenium webdriver 2.44.0-确实有一个文件夹
lib/goog/
量角器--version
进行验证
向package.json添加脚本也很有帮助
"scripts": {
"e2e": "protractor some/path/to/conf.js"
}
然后使用npm run e2e
执行此操作。这将确保您在项目中使用项目节点_模块中的量角器
更新:
上面提到的答案是,我更改了2.47.0的路径/lib/goog/
。我是在深夜才回答的,可能写错了。这可能是因为我做了一个npmi-S selenium webdriver@^2.47.0
。不知何故,您已经声明您想要^2.47.0,但是如果您是收缩包装2.47.0,那么这将阻止胡萝卜下载最后一个次要版本
答案的改进。下面的堆栈跟踪引用了两个不同版本的SeleniumWebDriver。作为量角器一部分的selenium webdriver和其他版本。不在量角器中的selenium webdriver引用的是路径lib/goog/
at promise.Promise.addCallback_ (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:651:16)
at promise.Promise.then (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:592:15)
at ManagedPromise.invokeThen_ (/Users/yarivkatz/Development/workspace/bugeez/bugeez-lp-final/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1193:12)
正如上面在更新中所述,我相信您的selenium webdriver版本中有一些东西被锁定了。另外,因为您有两个版本的selenium webdriver,所以您正在调用节点\u模块/量角器/节点\u模块/selenium webdriver
,而不知何故,它正在调用节点\u模块/selenium webdriver/lib/goog/
请删除devDependency,将其从shrinkwrap中删除,然后重新安装您的依赖项。your package.json没有Gradurator版本。您是否正在使用量角器的全局安装?还有,这是什么版本的量角器?很抱歉,我忘了发布我的package.json-dev依赖项。量角器不是全局的,版本是4.0.14。所以我仍然没有在您的devdependency中看到量角器版本。此外,您正在使用@types/量角器。这不是必需的,因为量角器支持TypeScript。这是由angular cli创建的吗?在开发依赖项中有一个量角器:“量角器”:“^4.0.11”,关于不需要的@types/量角器,您是对的,但即使将其删除,也不会更改结果谢谢您的回答:我不是从全局上下文运行量角器,版本是4.0.14。感谢您安装了两个版本的selenium webdriver。一个版本有lib/goog/。我相信是你的另一个selenium Web驱动程序。堆栈跟踪引用了两个selenium Web驱动程序。