我正在try 测试由3个元素共享的属性是否具有多个值之一.这是html:


    <div class="wrapper">
      <a title="value 1"</a> 
      <a title="value 2"</a> 
      <a title="value 3"</a> 
    </div>

我需要一种方法来断言所有三个元素的title属性都将具有3个值之一,因为它们的顺序将来可能会改变,但我只需要确保它们在那里.

以下是我try 过但对我不起作用的方法:

cy.get('.wrapper')
    .children().as('socialLinks');

cy.get('@socialLinks')
    .should('have.attr', 'title').as('title');

expect('@title').to.contain.oneOf('value 1', 'value 2', 'value 3');

我怀疑它可能需要for-loop,但我不知道如何接近它.

推荐答案

for循环是可能的,但可能会在Cypress测试中导致问题(搜索SO问题以获取一些示例).

有一个.each()命令,它以一种对Cypress友好的方式执行for循环

cy.get('.wrapper').children()
  .each(($el) => {
    const title = $el.attr('title')
    expect(title).to.be.oneOf(['value 1', 'value 2', 'value 3'])
  })

但如果这些值是从API加载的,则应该将expect()替换为should(),以确保测试在加载完成之前重新try .

cy.get('.wrapper').children()
  .each(($el) => {
    cy.wrap($el).invoke('attr', 'title')
      .should('be.oneOf', ['value 1', 'value 2', 'value 3'])
  })

Javascript相关问答推荐

如何在JavaScript中通过一次单击即可举办多个活动

确定MutationRecord中removedNodes的索引

我无法在NightWatch.js测试中获取完整的Chrome浏览器控制台日志(log)

node TS:JWT令牌签名以验证客户端和后台问题之间的身份验证

拖放仅通过 Select 上传

. NET中Unix时间转换为日期时间的奇怪行为

在观察框架中搜索CSV数据

如何从HTML对话框中检索单选项组的值?

连接到游戏的玩家不会在浏览器在线游戏中呈现

第二次更新文本输入字段后,Reaction崩溃

如何在不影响隐式类型的情况下将类型分配给对象?

为什么在函数中添加粒子的速率大于删除粒子的速率?

与在编剧中具有动态价值的定位器交互

react 路由DOM有条件地呈现元素

在Java脚本中构建接口的对象

如何将字符串拆分成单词并跟踪每个单词的索引(在原始字符串中)?

Played link-Initialize.js永远显示加载符号

扩散运算符未按预期工作,引发语法错误

Refine.dev从不同的表取多条记录

我如何才能让p5.js在不使用实例模式的情况下工作?