ユーザー名とパスワードの2つの入力フィールドと、スピナーボタンがあります。このスピナーボタンをクリックすると、これら2つの入力フィールドが無効になり、別のページにリダイレクトされます。これらの入力フィールドが無効になっているかどうかを確認するために、エンドツーエンドのテストを書いています。
element(by.model('username')).sendKeys('rabi');
element(by.model('password')).sendKeys('rabi');
/* click on spin button */
spinBtn = element(by.className('call-to-action'));
spinBtn.click();
/* check if input is disabled */
var loginInput = element(by.id('login-username'));
expect(loginInput.isEnabled()).toBe(false);
前の例
expect(loginInput.getAttribute('disabled')).toEqual('disabled');
何かが有効になっているかどうかを確認するためには機能しません。
あなたが使用する必要があります
expect(loginInput.isEnabled()).toBe([true|false]);
何かが有効か無効かを正確に確認します。
それがうまくいかない場合は、おそらく何か他のことが起こっています。
Get属性メソッドを使用できます。
expect(loginInput.getAttribute('disabled')).toEqual('disabled');
@ TaylorRose の回答(最も投票された回答)が非常に良いことを付け加えたいと思います。
// passes when the button does not have 'disabled' attribute
expect($('#saveChangesBtn').isEnabled()).toBe(true);
しかし、これを実行しようとするとエラーが発生しました:
Error: TSError: ⨯ Unable to compile TypeScript e2e/specs/element.e2e-spec.ts:
Argument of type 'false' is not assignable to parameter of type 'Expected<Promise<boolean>>'.
この問題には複数の解決策がありますが、そのうちの2つは次のとおりです。
1.「any」と入力してください
expect<any>($('#saveChangesBtn').isEnabled()).toBe(true);
2.パッケージjsonに@ types/jasminewd2を追加します(もちろん「npm install」を実行します)(aktraore @ - github に感謝します)
"devDependencies": {
...,
"@types/jasminewd2": "2.0.6",
...
}
そして、TypeScriptからのエラーがなくなり、この問題が解決します。追伸バージョン2.0.6はこの投稿を書いている時点で最新のものであり、魔法のバージョンはあなたのケースとは異なるかもしれません。
したがって、ここで誰かがこの問題を抱えている場合、これは最も投票された答えに追加されます。