Nightwatch.js - 如何断言复选框未检查?

tom*_*all 5 selenium selenium-webdriver nightwatch.js

我正在使用nightwatch.js对应用程序进行端到端测试,但无法验证复选框的状态.

attributeEquals()用来验证是否选中了复选框:

module.exports = {
  "Checkbox is checked" : function (client) {
    client
      .url(client.launch_url)
      .useCss()
      .waitForElementVisible("body", 1000)
      .verify.attributeEquals('#a_checkbox', 'checked', 'true') // quotes necessary
      .end();
  }
};
Run Code Online (Sandbox Code Playgroud)

但我还需要验证是否未选中复选框.

要做到这一点,我尝试attributeEquals()再次使用,有各种期望:

module.exports = {
  "Checkbox is not checked" : function (client) {
    client
      .url(client.launch_url)
      .useCss()
      .waitForElementVisible("body", 1000)
      .verify.attributeEquals('#b_checkbox', 'checked', null)
      .verify.attributeEquals('#b_checkbox', 'checked', 'null')
      .verify.attributeEquals('#b_checkbox', 'checked', 'false')
      .verify.attributeEquals('#b_checkbox', 'checked', false)
      .verify.attributeEquals('#b_checkbox', 'checked', '')
      .end();
  }
};
Run Code Online (Sandbox Code Playgroud)

但它们都会失败,并显示一条消息,指出该checked属性不存在:

Running:  Checkbox is not checked

?  Element <body> was visible after 68 milliseconds.
?  Testing if attribute checked of <#b_checkbox> equals "null". Element does not have a checked attribute.  - expected "null" but got: null
?  Testing if attribute checked of <#b_checkbox> equals "null". Element does not have a checked attribute.  - expected "null" but got: null
?  Testing if attribute checked of <#b_checkbox> equals "false". Element does not have a checked attribute.  - expected "false" but got: null
?  Testing if attribute checked of <#b_checkbox> equals "false". Element does not have a checked attribute.  - expected "false" but got: null
?  Testing if attribute checked of <#b_checkbox> equals "". Element does not have a checked attribute.  - expected "" but got: null
Run Code Online (Sandbox Code Playgroud)

该消息是正确的,没有checked属性,但缺少属性意味着没有选中复选框,因此我希望测试通过.

怎么能实现这一目标?

我正在使用夜视仪v.5.5.36,如果这很重要的话.

小智 10

你可以试试: browser.expect.element('#b_checkbox').to.not.be.selected;