Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular2量角器类型错误:this.flow_u.getSchedulingFrame_u不是函数_Angular_Jasmine_Protractor - Fatal编程技术网

Angular2量角器类型错误:this.flow_u.getSchedulingFrame_u不是函数

Angular2量角器类型错误: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

尝试使用量角器在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: 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驱动程序。