(量角器)检查点击是否禁用输入?

时间:2014-02-18 10:44:14

标签: javascript angularjs protractor angularjs-e2e

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

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

3 个答案:

答案 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是撰写本文时的最新版本,魔术版本可能因您的情况而有所不同。

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