【问题标题】:How to compare all array elements with particular name? [closed]如何比较具有特定名称的所有数组元素? [关闭]
【发布时间】:2021-07-19 09:31:38
【问题描述】:

我在数组中有一个产品名称列表。我想将每个产品名称与特定产品名称进行比较。例如,在数组中,如果我找到产品名称“Damen Basic T-Shirt”,那么我想点击该产品。

这是我的代码

cy.get('.category-products').find('.product-name').then(($ele) => {
  const texts = Array.from($ele, el => el.innerText);
  texts.forEach(text => cy.log(text)); // It will print all the product name
  if(texts == ' Damen Basic T-Shirt '){
    cy.log('product found')
    cy.get('productname').click()
  } else {
    cy.log('product not found')
  }
})

【问题讨论】:

  • 问题是什么?您的问题中已经有了您需要的一切(“它将打印所有产品名称”)。只需适应它。
  • if(texts == 'Damen Basic T-Shirt ') 这种比较不起作用
  • 您的问题措辞是"Damen..Shirt",但您的测试是" Damen..Shirt ",它们不一样。 实际文本是什么?它有一个前导+尾随空格吗?您可能想使用texts.trim() == 'Damen Basic T-Shirt'
  • 这是正文。

    shirtee.com/de/frauen-basic-t-shirt">达门基本款T恤

  • @freedomn-m texts 是一个字符串数组。这仅适用于一个字符串。

标签: javascript jquery cypress


【解决方案1】:

您可以直接使用each() 代替then() 来遍历元素,当您找到所需的文本时,单击它。

cy.get('.category-products').find('.product-name').each(($ele) => {
    if ($ele.text().trim() == 'Damen Basic T-Shirt') {
        cy.log('product found')
        cy.wrap($ele).click()
    } else {
        cy.log('product not found')
    }
})

【讨论】:

    【解决方案2】:

    只需使用过滤器,不要重复每个过滤器 - '未找到产品' 将出现在所有其他项目中

    cy.get('.category-products')
      .find('.product-name')
      .filter(':contains("Damen Basic T-Shirt")')
      .click()
    

    cy.contains('.category-products .product-name', 'Damen Basic T-Shirt')
      .click()
    

    【讨论】:

    • 也在工作。但我想在“Else if”部分添加另一个操作。
    • 好的,只是想向您展示正确的方法 - 循环和 if/else 会导致错误的测试。您希望对所有其他产品采取什么行动?
    • 我正在检查管理面板,所以我必须添加产品和产品名称,它的描述将被添加。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 2012-05-08
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多