[解決済み] Protractor を使って要素がクラスを持っているかどうかをテストするには?
2023-03-02 12:17:37
質問
Angularアプリをe2eテストするためにProtractorを試しているのですが、要素が特定のクラスを持っているかどうかを検出する方法がわかっていません。
私の場合、テストは送信ボタンをクリックし、今私はform[name"getoffer"]がクラス.ngDirtyを持っているかどうかを知りたいと思うのです。解決策は何でしょうか?
describe('Contact form', function() {
beforeEach(function(){
browser.get('http://localhost:9000');
element(by.linkText('Contact me')).click();
});
it('should fail form validation, all fields pristine', function() {
element(by.css('.form[name="getoffer"] input[type="submit"]')).click();
expect(element(by.name('getoffer'))).toHaveClass('ngDirty'); // <-- This line
});
});
どのように解決するのですか?
を使用する際に気をつけなければならないことがあります。
toMatch()
を使用する際に注意しなければならないことのひとつに、部分一致があります。例えば、ある要素がクラス
correct
と
incorrect
というクラスを持っていることをテストしたい。
correct
. もしあなたが
expect(element.getAttribute('class')).toMatch('correct')
を使うと、たとえその要素に
incorrect
クラスであっても真を返します。
私の提案です。
完全一致しか受け付けないのであれば、そのためのヘルパーメソッドを作ればよいでしょう。
var hasClass = function (element, cls) {
return element.getAttribute('class').then(function (classes) {
return classes.split(' ').indexOf(cls) !== -1;
});
};
というように使うことができます。
expect
が自動的にプロミスを解決することを利用して)このように使うことができます。
expect(hasClass(element(by.name('getoffer')), 'ngDirty')).toBe(true);
関連
-
[解決済み] プリフライト応答が成功しない
-
[解決済み] X-Frame-Options'を'SAMEORIGIN'に設定しているため、フレーム内での表示を拒否された。
-
[解決済み] ng-repeat内で$indexを使用して、クラスを有効にしてDIVを表示するにはどうすればよいですか?
-
[解決済み] エラーです。10回の$digest()反復に達しました。動的なsortby述語で中断!?
-
angularjs統合ueditor入門
-
angularjsのルーティングについて $stateと$stateParamsの話
-
angularでのng-repeatとtrack by
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み] ng-classを使った複数クラスの追加
-
[解決済み] 条件に応じて特定のルートにリダイレクトする機能
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] angularのpostリクエストでpreflightのレスポンスがHTTPステータスコード403で不正になる。
-
[解決済み] Angular ng-repeatの条件付きラップアイテム(ng-repeatのグループアイテム)。
-
[解決済み] シンプルなangularjsの日付入力
-
[解決済み] AngularJSで画像を表示する
-
angularjs が src で指定されたコンテンツを iframe 内で正しく表示しない
-
[解決済み] どのように$state.goにパラメータを追加しますか?
-
[解決済み] AngularJs .$setPristineでフォームをリセットする
-
[解決済み] Angular.js: $evalの仕組みとバニラevalとの違いは何ですか?
-
[解決済み] ng-repeat :単一フィールドによるフィルタリング
-
[解決済み] 子コントローラから親スコープにアクセスするAngularJS