我有两个输入字段,用户名和密码以及微调按钮。当我点击这个微调按钮时,这两个输入字段被禁用,我被重定向到另一个页面。我正在编写一个端到端的测试来检查这些输入字段是否被禁用。
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);
答案 0 :(得分:60)
上一个
的例子expect(loginInput.getAttribute('disabled')).toEqual('disabled');
无法检查某些内容是否已启用。
你应该使用
expect(loginInput.isEnabled()).toBe([true|false]);
准确验证是否启用了某些内容。
如果那不适合你,可能还有其他事情发生。
答案 1 :(得分:0)
您可以使用get属性方法:
expect(loginInput.getAttribute('disabled')).toEqual('disabled');
答案 2 :(得分:0)
我想补充一点,@ 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>>'.
对此问题有多种解决方案,其中有两种:
1。请不要输入'any'
expect<any>($('#saveChangesBtn').isEnabled()).toBe(true);
2。将@ types / jasminewd2添加到您的json包中(当然要运行“ npm install”)(感谢aktraore @ github)
"devDependencies": {
...,
"@types/jasminewd2": "2.0.6",
...
}
然后再没有来自打字稿的错误,它解决了这个问题。 P.s.版本2.0.6是撰写本文时的最新版本,魔术版本可能因您的情况而有所不同。
因此,如果这里有人遇到此问题,这是投票最多的答案。