【问题标题】:How do I iterate through a table and extract the values from a row and compare with datatable如何遍历表并从行中提取值并与数据表进行比较
【发布时间】:2019-07-17 14:14:26
【问题描述】:

我正在尝试填写表格并保存详细信息,然后相同的详细信息会显示在表格行中。我需要遍历表行并从行中提取所有值(Value1、Value2、Value3),然后与输入值进行比较。我如何使用柏树来做到这一点。


<tbody class="jss1692">
    <tr class="jss1588">
        <td class="jss1598 jss1600 jss1593 jss1597 jss1693 jss1694 jss1696 jss1697 sc-jtRfpW bPusKc" style="left: 0px;">
            <div class="sc-kTUwUJ frEzXN">
                <div title="Draft" class="sc-jKJlTe gSOlpt">
                    <div data-testid="StatusLight" class="sc-eNQAEJ heHvgs"></div>
                </div>
            </div>
        </td>
        <td class="jss1598 jss1600 jss1593 jss1597 jss1696 sc-dqBHgY eAlZOZ">
            <div class="sc-elJkPf epzdvI">Value1</div>
        </td>
        <td class="jss1598 jss1600 jss1593 jss1597 jss1696 sc-dqBHgY eAlZOZ">
            <div class="sc-elJkPf epzdvI">Value2</div>
        </td>
        <td class="jss1598 jss1600 jss1593 jss1597 jss1696 sc-dqBHgY eAlZOZ">
            <div class="sc-elJkPf epzdvI">Value3</div>
        </td>
    </tr>
</tbody>

【问题讨论】:

    标签: javascript cypress


    【解决方案1】:

    您需要遍历 td 元素并提取文本内容。由于我使用.find('td'),它会找到所有的 td 元素,而使用.each(),您可以逐个遍历它们,选择您想要的元素(在这种情况下,我跳过索引为 0 的元素,因为它只是一个空字符串):

    let values = []
    cy.visit('stackoverflow/table.html')
    cy.get('tbody > tr')
      .find('td')
      .each(($el, $index) => {
         cy.wrap($el)
          .invoke('text')
          .then(text => {
              if($index!==0)
                values.push(text.trim())
              })
           })
          .then(() => expect(values).to.deep.eq(["Value1", "Value2", "Value3"]))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 2015-01-30
      相关资源
      最近更新 更多