量角器 3.1.1 + 角度 2:找不到元素的可测试性

Protractor 3.1.1 + Angular2: Could not find testability for element

本文关键字:找不到 元素 可测试性 角度 量角器      更新时间:2023-09-26

我正在使用量角器 3.1.1 和 Angular2 运行一个简单的 HelloWorld 示例,但这件事一直告诉我找不到元素的可测试性。我在互联网上搜索了一些关于错误的信息,但没有运气,这似乎是一种新的例外,没有那么多人遇到过。

这是我正在使用的组件:

import {Component} from 'angular2/core';
@Component({
    selector: 'my-app',
    template: '<h1>My First Angular 2 App</h1>' +
    '<h2>{{myName}}</h2>' +
    '<input id="someId" [(ngModel)]="myName"/>'
})
export class AppComponent {
    myName = 'Joe';
}

这是量角器配置文件:

exports.config = {
  framework: 'jasmine',
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: [
    'e2e/*.js'
  ],
  baseUrl: 'http://localhost:3000'
};

这是我正在运行的量角器场景:

describe('angularjs homepage', function() {
    it('should say my name', function() {
        browser.get('/index.html');
        var greeting = element(by.id('someId'));
        expect(greeting.getAttribute('value')).toEqual('Joe');
    });
});

网页在呈现模板 HTML 的情况下正常加载,但量角器认为生成的网页不是 Angular 网页,现在,为什么会这样?显然,如果我检查生成的网页,它只是处理过的 Angular 代码的结果 HTML,我做错了什么吗?

这是完整的错误:

Error: Failed: Error while waiting for Protractor to sync with the page: "Could not find testability for element."

如果我按照量角器教程所说的运行一个简单的测试,请使用以下演示页面:http://juliemr.github.io/protractor-demo/,它按预期工作,所以有些东西有我的 Angular2 代码,量角器没有使用它,但我已经没有想法了,有人知道发生了什么吗?

更新 23-02-2016

经过一些研究,我发现要将量角器与 Angular2 一起使用,配置文件中必须有一个额外的配置行:

useAllAngular2AppRoots: true

这样 conf.js 现在看起来像:

exports.config = {
  framework: 'jasmine',
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: [
    'e2e/*.js'
  ],
  baseUrl: 'http://localhost:3000',
  useAllAngular2AppRoots: true
};

或者使用以下内容显式包含应用根目录:

rootElement: 'my-app'

在此更新之后,所有查找元素的调用by.id()正常工作,但是如果您假装使用任何定位器 by.model()by.binding() ,它只会失败并显示消息UnknownError: unknown error: angular is not defined。不知道为什么。

显然该提交中存在错误。检查这个!.

但现在您可以使用 browser.executeScript('window.name = "NG_ENABLE_DEBUG_INFO!"');

使用量角器和角度,在protractor.conf.js中添加rootElement: 'my-app-root',其中my-app-root是元素名称(CSS 选择器)。此处提供了配置文档。