6

Knockout を使用する Web ページに取り組んでいます。Angular 以外のページでの分度器の使用に関するこの投稿を見て、分度器をセットアップしましたが、分度器が KO コンポーネントの一部である要素を「見る」ことができないようです。

describe('a simple test', function () {
  it('works', function () {
    browser.ignoreSynchronization = true;
    browser.get('profile');

    expect(browser.getTitle()).toEqual('Title');  // this passes (outside KO)

    expect(element(by.id('ko-component')).getText()).toEqual('Hello World!'); // this fails (inside KO)
  });
});

2 番目のアサーションでは、要素が確実に HTML にあるにもかかわらず、このエラーが発生します。

Message:
 NoSuchElementError: No element found using locator: By.id("ko-component")

分度器を使用できない場合は、他の e2e テスト フレームワークの提案を歓迎します。

4

1 に答える 1

9

protractor基本的にラッパーですWedDriverJS(javascript seleniumバインディング)。protractorAngularJS ページのテストをより簡単かつ自然にします。angular が確定し、ページを操作する準備ができたことを知り、いくつかの角度固有のロケーターを導入します。

knockoutつまり、ページを確実にテストできますprotractor。この場合、Expected Conditionを使用して、要素が存在するまで明示的に待機する必要があります。ko-componentpresenceOf

var EC = protractor.ExpectedConditions;
var e = element(by.id('ko-component'));
browser.wait(EC.presenceOf(e), 10000);

expect(e.getText()).toEqual('Hello World!');
于 2015-05-05T22:37:22.953 に答える