web-dev-qa-db-ja.com

分度器が失敗しました:要素は相互作用できません

Angular 7.xアプリのE2Eテストを実行しています。テストはローカルマシンで直接実行されます。しかし、リポジトリ(GitLab)にプッシュすると、パイプラインが失敗してスローされます次のエラー:

ユーザープロフィール-プロフィールの確認と変更-失敗:要素を操作できません(セッション情報:chrome = 71.0.3578.80)(ドライバー情報:chromedriver = 2.45.615279(12b89733300bd268cff3b78fc76cb8f3a7cc44e5)、platform = Linux 4.14.74-coreos x86_64)

テストケース:

_it('USER PROFILE - Check and change PROFILE', () => {

    page.navigateTo();

    browser.sleep(1000);
    expect(page.getProfileEditTagName()).toMatch('app-edit-profile');

    expect(element(by.className('logged-as')).getText()).toBe( testEmail );


    browser.actions().mouseMove( element.all( by.id('editIcon-salutation') ).get(0)).click().perform().then(function () {
        browser.sleep(4000);

        element( by.className('mat-select-arrow') ).click().then(function () {

            browser.actions().mouseMove( element.all(by.className('option-value mat-option')).get(0)).click().perform();
            browser.sleep(1000);
            browser.actions().mouseMove( element.all( by.id('saveButton-salutation') ).get(0)).click().perform();
            browser.sleep(1000);

        });
    });

});
_

navigateTo()profile.po.tsの単なるメソッドです:

_navigateTo() {
    browser.get('/profileComponentUrl');
}
_

私を混乱させ、バグをローカライズできないのはどこが悪いのか、それはローカルで正常に動作することです。しかし、レポジトリにプッシュすると、そのテストケースで正確に失敗します。ヒントはありますか?

5
k.vincent

私が理解する1つの理由は、スクロールの問題です。要素が正しく表示されているかどうかを確認する必要があります。非表示になっている可能性があります。したがって、scrollToTop/scrollToElement/scrollToElementViewなどを使用します。条件に適したさまざまなスクロールメソッドを記述できます。

別の理由はロケーターです。ロケーターを変更してみてください。ロケーターをあまりトリミングしないでください。フルボディのCSSロケーターで試してみてください。機能する場合は、適切にトリミングしてください。 chromeコンソールでしばらく動作する可能性がありますが、テストケースでは動作しません。

0
Athar