【问题标题】:How to assert that input value is truthy with cypress如何用柏树断言输入值是真实的
【发布时间】:2019-08-28 13:12:24
【问题描述】:

我有一些意见

<input />

如何断言输入具有真实值?

我认为有可能

cy('input').should('not.have.value', '')

但我认为这有点不可靠。或者可能不是。但无论如何,如果知道其他方法来检查真实值,那就太好了。

【问题讨论】:

  • 你应该添加你自己的发现作为答案并接受它作为正确的。
  • 你的答案对我有用。 tks。我希望 API get('#myinput').its('value').should('not.be.empty') 能工作,但它没有。

标签: cypress


【解决方案1】:

刚刚发现invoke这个东西,所以可以这样做:

cy.get('input').invoke('val').should("be.ok");
cy.get('input').invoke('val').should('not.be.empty') // works in the same way.

invoke 是调用函数的方式(在这种情况下为jquery command)。

【讨论】:

    【解决方案2】:

    类似的方法也可以:

    cy.get('input')
      .invoke('val')
      .then(value => assert.isTrue(!!value));
    

    【讨论】:

      【解决方案3】:

      有多种解决方案,你也可以使用:

      cy.('input').should('not.be.empty')

      这比确实检查值是否不是空字符串更可靠。

      【讨论】:

      • 感谢您的回答,但它的工作方式与我的不同。在您的情况下,您似乎正在对输入本身进行断言(例如在 DOM 元素上?),但不是其特定属性。我想我应该按照@SamL 的建议发布并接受我自己的答案。然而,not.be.empty 在我看来比 be.ok 好。所有这些基于字符串的断言对我来说看起来很不方便......
      • &lt;input /&gt; 对于“be.empty”总是返回 true,对于“not.be.empty”总是返回 false。我认为它正在检查 HTML input 元素是否有内容(元素打开和关闭标签之间的内容)。它没有检查其value 属性或调用val() 的结果。
      猜你喜欢
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多