【问题标题】:Checking a radio button in Protractor + AngularJS检查 Protractor + AngularJS 中的单选按钮
【发布时间】:2017-03-11 05:30:23
【问题描述】:

我的 html 页面上有一个单选按钮,我想测试当前选定选项的值

        <div>
            <input type="radio" name="radio1" value="enabled" checked/>
            <label for="radio1">Yes</label>
        </div>
        <div>
            <input type="radio" name="radio1" value="disabled" />
            <label for="radio1">No</label>
        </div>
        <br />

我在用于测试的页面对象上使用此代码

var radio = $("input[type='radio'][name='radio1']:checked").val();

不幸的是我得到了

val() 未定义

如何根据单选按钮的当前状态返回“启用”或“禁用”?

【问题讨论】:

  • 不幸的是同样的结果
  • @Maximus val() 是一个 jQuery 函数,他正在使用 Protractor。

标签: javascript angularjs protractor e2e-testing


【解决方案1】:

val() 是一个 jQuery 函数,除非你以这种方式设置 Protractor,否则你无法访问它。请改用getAttribute('value'),它会返回一个承诺 - 请参阅getAttribute() reference

所以如果你在断言中使用它,你可以让expect 自己解决promise:

var radio = $("input[type='radio']:checked")
expect(radio.getAttribute('value')).toEqual('enabled');

或者,如果您想访问该值并在其他地方使用它,请自行解决该承诺:

radio.getAttribute('value').then(function (val) {
    if(val === 'enabled') {
        // code
    }
});

【讨论】:

    【解决方案2】:

    值 = 1 而不是“启用”

    // 使用 TS

    static myElement = element
        .all(by.css('input[type="radio"]:checked'))
        .get(0);
    
    expect(this.myElement.getAttribute('value')).toEqual(
          '1'
        );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-31
      • 2015-04-22
      • 1970-01-01
      • 2019-05-29
      • 2013-09-02
      • 1970-01-01
      • 2017-12-31
      • 2011-04-24
      相关资源
      最近更新 更多