【问题标题】:How to check a checkbox element according to the value in cypress while the value does not exist如何在值不存在时根据cypress中的值检查复选框元素
【发布时间】:2020-07-24 01:02:45
【问题描述】:

如何根据cypress中的value勾选一个checkbox元素,而value属性不存在。 我想根据值来勾选复选框,而不是id,因为每个页面的id都不一样。

因为在某些页面中,id以c1开头,有些页面id以c2开头,有些以c5开头。 我将如何根据值检查元素? 我得到了所有 3 个复选框的选择器,但它检查了所有 3 个元素。我想要根据 value 属性的特定元素,但是没有 value 属性。 我试过这个

             cy.get('.x-overlay__wrapper--right input[type="checkbox"]').check()

但它检查了所有元素 这检查了第一个元素

             cy.get('.x-overlay__wrapper--right input[type="checkbox"]').first().check()

但是我想根据value进行检查,但是这里的attributes中没有value属性。

我想要的值就写在复选框旁边

这里是 html

【问题讨论】:

  • 请添加Minimal Reproducible Example。换句话说,你已经尝试过什么?
  • 我发布了一个答案。代码有效吗?
  • 我已更新以满足您的需求。

标签: javascript html checkbox css-selectors cypress


【解决方案1】:

查看 html,也许搜索文本,然后使用父级和兄弟级命令将主题转移到复选框,类似于

cy.contains('span', 'Free Shipping')  // find your text
  .parent('div')                      // move to parent div
  .siblings('span.checkbox')          // move to checkbox span
  .find('input')                      // select it's input
  .check();                         

【讨论】:

  • cy.check() 只能在 :checkbox 和 :radio 上调用。您的主题是:...了解更多
  • LOL - 我看到了类复选框并假设这是输入。显然,您需要在span.checkbox 中找到输入。
【解决方案2】:

用cmets解释代码的例子:

cy.get('.x-overlay__wrapper--right input[type="checkbox"]').each((checkbox, i) => { // Get the elements and run .each() on them
  if (cy.get('.cbx.x-refine__multi-select-cbx')[i].innerHTML === "value") { // If the value is something, perform an action. Replace "value" with the value that you need to test it for
    checkbox.check()
  }
})

【讨论】:

  • 从哪里获得价值?该值写在复选框旁边
  • @leenM 我想我误解了你。按值,您是指输入框中的文本吗?
  • 我编辑了这个问题,我的意思是每个复选框的下一个值,例如免费送货,它只是写在复选框旁边
  • @leenM 好的。我稍后会编辑问题以包含它。
  • 我有这个错误“无法读取未定义的属性'innerHTML'”
猜你喜欢
  • 2023-03-28
  • 2012-01-09
  • 1970-01-01
  • 2017-07-11
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 2013-03-09
相关资源
最近更新 更多