23

我有两个输入字段,用户名和密码以及一个微调按钮。当我单击此微调器按钮时,这两个输入字段被禁用,我被重定向到另一个页面。我正在编写端到端测试来检查这些输入字段是否被禁用。

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);
4

3 回答 3

67

前面的例子

expect(loginInput.getAttribute('disabled')).toEqual('disabled');

不适用于检查是否启用了某些东西。

你应该使用

expect(loginInput.isEnabled()).toBe([true|false]);

准确验证是否启用/禁用了某些东西。

如果这对您不起作用,则可能还有其他事情发生。

于 2014-05-15T19:13:05.087 回答
2

我想补充一点,@ 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.投出你的期望输入“任何”

expect<any>($('#saveChangesBtn').isEnabled()).toBe(true);

2.将@types/jasminewd2 添加到你的json包中(当然还要运行'npm install')(感谢aktraore@ github

 "devDependencies": {
    ...,
    "@types/jasminewd2": "2.0.6",
    ...
   }

然后打字稿不再出现错误,它解决了这个问题。Ps 版本 2.0.6 是撰写本文时的最新版本,魔术版本可能因您的情况而异。

因此,如果这里有人遇到此问题,这是对投票最多的答案的补充。

于 2019-01-29T12:38:07.860 回答
0

当使用“getAttribute('disabled').toEqual('true')”不起作用时,我改用 className 来完成我的测试,因为禁用时 classNames 发生了变化。

于 2021-11-11T07:46:16.577 回答