【问题标题】:(Protractor) Checking whether an input is disabled on click?(量角器)检查单击时是否禁用输入?
【发布时间】:2014-03-18 01:29:46
【问题描述】:

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

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

【问题讨论】:

    标签: javascript angularjs protractor angularjs-e2e


    【解决方案1】:

    前面的例子

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

    无法检查是否启用了某些功能。

    你应该使用

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

    准确验证是否启用/禁用了某些功能。

    如果这不适合你,可能还有其他事情发生。

    【讨论】:

    • Taylor 是对的,isEnabled() 是正确的做法。它应该是小写的I,所以正确的行应该是expect(loginInput.isEnabled()).toBe([true|false])。请参阅docs 了解更多信息。
    • isEnabled() 效果很好,应该被认为是正确的答案。我发现除非我有toEqual('true'),否则expect(loginInput.getAttribute('disabled')).toEqual('disabled'); 不起作用。 isEnabled() 是一个更清洁的解决方案。
    【解决方案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.投出你的期望输入'any'

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

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-26
        • 1970-01-01
        • 1970-01-01
        • 2022-10-14
        • 1970-01-01
        • 1970-01-01
        • 2019-03-31
        相关资源
        最近更新 更多