【问题标题】:Using Protractor Test with Bootstrapped AngularJS使用带引导的 AngularJS 的量角器测试
【发布时间】:2014-08-31 22:01:41
【问题描述】:

我希望能够使用 Protractor 测试我的 Angular 应用程序。由于我使用 RequireJS,我不能在我的 DOM 中使用 ng-app 指令,这就是我使用 angular.bootstrap 手动引导 Angular 的原因。

Protractor 打印如下错误输出:

错误:在页面 http://localhost:1428/ 上找不到 Angular:重试寻找超出的角度

然后,我意识到 Protractor 文档有一个警告:

Protractor 不适用于使用 angular.bootstrap 手动引导的应用。您必须使用 ng-app 指令。

那么,是否有任何解决方法可以使用手动引导的 Angular 应用程序运行 Protractor 测试,或者我应该开始学习替代测试套件?

【问题讨论】:

  • 我们的量角器测试在 RequireJS 和手动引导的应用程序上运行良好。你能分享更多的代码吗? :)

标签: angularjs requirejs protractor


【解决方案1】:

去量角器配置并添加这个

onPrepare: function() {
// implicit and page load timeouts
  browser.manage().timeouts().pageLoadTimeout(40000);
  browser.manage().timeouts().implicitlyWait(25000);

  // for non-angular page
  browser.ignoreSynchronization = true;

  // sign in before all tests

}

它对我有用

我的完整配置文件如下所示...

// conf.js
exports.config = {
seleniumAddress: 'http://localhost:4444/wd/hub',
specs: ['../**/*.e2e.js'],
multiCapabilities: [{
browserName: 'firefox'
}],

onPrepare: function() {
// implicit and page load timeouts
browser.manage().timeouts().pageLoadTimeout(40000);
browser.manage().timeouts().implicitlyWait(25000);

// for non-angular page
browser.ignoreSynchronization = true;

// sign in before all tests

 }
}

实际发生的情况是,您要求量角器等待一段时间并忽略 document.ready(),以便给您时间手动引导 Angular。

【讨论】:

  • 并非如此,当您引导角度异步时,这种解决方法也可以工作(我的情况是我作为依赖项传递来自另一个应用程序的 RequireJS 模块)
  • 这对我不起作用,它使测试间歇性地工作,但其他时候项目还没有准备好并且它们失败了。 (即,我可以连续运行四次完全相同的测试并获得一次失败。)
  • 这可能与您的超时有关
猜你喜欢
  • 1970-01-01
  • 2013-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
相关资源
最近更新 更多