代码之家  ›  专栏  ›  技术社区  ›  Nickon

在Cypress中获取HTML表的数据

  •  0
  • Nickon  · 技术社区  · 4 年前

    我想使用 Cypress (没有包装纸)。

    假设我们有这样一张桌子:

    可乐1 可乐2 可乐3
    D1 D3 D5
    D2 D4 D6

    这是我的代码,但我不知道如何获取真实数据:

    getTableData() {
      return cy.get('#table-modal')
        .then(modal => cy.wrap(modal).find('table > tbody > tr'))
        .each(row =>
          cy
            .wrap(row)
            .find('td')
            .each(column => cy.wrap(column).invoke('text'))
        );
    }
    
    const expected = [
      ['D1', 'D3', 'D5'],
      ['D2', 'D4', 'D6']
    ];
    
    getTableData().should('eq', expected); // failing, because function returns wrapped data by Cypress
    
    0 回复  |  直到 4 年前
        1
  •  1
  •   first last    4 年前

    尝试:

    async function getTableData() {
      const table = (await cy.get("table")).get(0);
      const data = Array.from(table.querySelectorAll("tr")).map((tr) =>
        Array.from(tr.children).map((td) => td.textContent)
      );
      
      return data;
    }
    
    const expected = [
      ["Col1", "Col2", "Col3"],
      ["D1", "D3", "D5"],
      ["D2", "D4", "D6"],
    ];
    
    cy.wrap(getTableData()).should("deep.eq", expected);