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');
}
_
私を混乱させ、バグをローカライズできないのはどこが悪いのか、それはローカルで正常に動作することです。しかし、レポジトリにプッシュすると、そのテストケースで正確に失敗します。ヒントはありますか?
私が理解する1つの理由は、スクロールの問題です。要素が正しく表示されているかどうかを確認する必要があります。非表示になっている可能性があります。したがって、scrollToTop/scrollToElement/scrollToElementViewなどを使用します。条件に適したさまざまなスクロールメソッドを記述できます。
別の理由はロケーターです。ロケーターを変更してみてください。ロケーターをあまりトリミングしないでください。フルボディのCSSロケーターで試してみてください。機能する場合は、適切にトリミングしてください。 chromeコンソールでしばらく動作する可能性がありますが、テストケースでは動作しません。