2016-02-23 18 views
17

Tôi đang chạy mẫu HelloWorld đơn giản với Thước đo 3.1.1 và Angular2, nhưng điều này giữ cho tôi biết Không thể tìm thấy testability cho phần tử. Tôi googled Internet cho một số thông tin về lỗi, nhưng không có may mắn, nó có vẻ là một loại mới của ngoại lệ mà không phải rất nhiều đã phải đối mặt.Thước đo 3.1.1 + Angular2: Không thể tìm thấy testability cho phần tử

Đây là thành phần Tôi đang sử dụng:

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'; 
} 

Đây là tập tin cấu hình thước đo:

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

Và đây là kịch bản thước đo Tôi đang chạy:

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'); 
    }); 
}); 

Trang web tải bình thường với mẫu HTML được hiển thị, nhưng Thước đo lường cho rằng trang web kết quả không phải là Trang web góc, bây giờ, tại sao vậy? Và rõ ràng, nếu tôi kiểm tra trang web kết quả, nó chỉ là kết quả HTML của mã Angular đã xử lý, tôi có làm gì sai không?

Đây là lỗi hoàn chỉnh:

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

Nếu tôi chạy một thử nghiệm đơn giản như các thước đo Tutorial nói, sử dụng trang demo này: http://juliemr.github.io/protractor-demo/, nó hoạt động như mong đợi, vì vậy một cái gì đó có mã Angular2 tôi rằng thước đo không làm việc với nó, nhưng tôi đã hết ý tưởng, ai biết điều gì đang xảy ra?

CẬP NHẬT 23-02-2016

Sau khi một số nghiên cứu tôi thấy rằng sử dụng thước đo với Angular2, thì phải có một dòng cấu hình bổ sung trong tập tin cấu hình:

useAllAngular2AppRoots: true 

mà conf .js bây giờ trông giống như:

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

hoặc bao gồm các gốc ứng dụng một cách rõ ràng với:

rootElement: 'my-app' 

Sau bản cập nhật này tất cả các cuộc gọi đến tìm một yếu tố by.id() việc OK, nhưng nếu bạn giả vờ sử dụng bất kỳ các bộ định vị by.model() hoặc by.binding(), nó sẽ chỉ đơn giản là thất bại với thông điệp UnknownError: unknown error: angular is not defined. Không biết tại sao.

+0

cùng một vấn đề, tôi đoán tôi sẽ sử dụng 'by.id()' hoặc 'by.css()' cho thời điểm này ... – foch

+1

Bạn vừa cứu tôi rất nhiều rắc rối! –

+0

cũng đã sửa nó cho tôi! bạn nên đăng cập nhật làm câu trả lời để người khác có thể dễ dàng tìm ra giải pháp là gì. – OJ7

Trả lời

2

Dường như có lỗi trong cam kết đó. Check this!.

Nhưng bây giờ bạn có thể chạy thử nghiệm của bạn sử dụng browser.executeScript('window.name = "NG_ENABLE_DEBUG_INFO!"');

Các vấn đề liên quan