angularjs - 如何在 Protractor 中 $rootScope.$broadcast 事件

标签 angularjs testing protractor

有人有关于如何在 Protractor 测试中 $rootScope.$broadcast 事件的工作示例吗?

我知道 Protractor 不用于此,我应该使用 Karma 进行单元测试。但情况是我需要在 Protractor 测试中广播一个事件。为此,我想我需要获取 $rootScope。但我不知道如何在 Protractor 中执行此操作,经过长时间的搜索,我未能在互联网上找到答案。

我猜下面是关于单元测试的。 Protractor 中没有注入(inject)。

var rootScope;
beforeEach(inject(function($injector) {
    rootScope = $injector.get('$rootScope');
}));

$rootScope.$broadcast("EVENT_TO_TEST", other, possible, args);

希望解决方案存在。

最佳答案

您可以通过这种方式在浏览器中运行脚本:

browser.executeScript("
  angular.element('body').injector().get('$rootScope').$broadcast(...);
");

或者使用不同的语法来获取根作用域:

browser.executeScript("
  angular.element('body').scope().$root.$broadcast(...);
");

您可以用任何包含范围的元素替换 body

关于angularjs - 如何在 Protractor 中 $rootScope.$broadcast 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37296722/

相关文章:

ruby - Watir,通过自定义属性定位元素

javascript - Protractor - 上传文件错误 "Element <input type="文件">在 Firefox 58 中无法通过键盘访问,但在 Firefox 57 中工作正常

javascript - 如何从 Protractor 中的表中收集和返回聚合数据作为数组?

javascript - Protractor :随机测试失败

javascript - 过滤选择列表时更新默认选择选项

testing - FitNesse 测试台动态夹具?

javascript - angularjs $valid 不适用于字段

php - 在 PHPSpec(或任何单元测试框架)中 stub 有状态对象

javascript - 嵌套 HTML 元素的 Angular 范围问题

Angularjs 在大数据集中搜索分页