在 Cypress 中,XLSX 文件的读取并不总是正确

Tim*_*Tim 4 xlsx angular cypress

我有一个前端 Angular 应用程序,在其中实现 Cypress 测试。

但 XLSX 文件的读取并不总是正确。

如果我这样做:

cy.readFile('cypress/downloads/myfile.XLSX');
Run Code Online (Sandbox Code Playgroud)

它实际上确实按预期读取了文件。

但是如果我这样做:

cy.readFile('cypress/downloads/myfile.XLSX').should('contain', 'mytext');
Run Code Online (Sandbox Code Playgroud)

即使我知道它在文件中,它也不会读取“mytext”。

我知道我在语法上是正确的,因为它可以很好地读取 .xls 文件中的文本。

有什么方法可以让 cypress 查找带有 .XLSX 文件的文本吗?

非常感谢。

Tes*_*ick 6

SheetJS包可用于在读取并编码后解析XLSX文件base64

在下面的示例中,我使用了一个仅包含文本的小工作表

在此输入图像描述

阅读该文件后,我将其转换为 HTML,以便可以将其安装在 Cypress 测试页面中。

测试运行器显示数据,并且可以像网页一样查询。

const XLSX = require('xlsx')

it('reads and tests an XL file', () => {

  cy.readFile('cypress/downloads/file_example_XLS_10.xlsx', 'base64')
    .then(file => {

      // parse to HTML
      const data = XLSX.read(file)
      const worksheet = data.Sheets['Sheet1']
      const html = XLSX.utils.sheet_to_html(worksheet) 

      // mount to test page
      const worksheetAsTable = Cypress.$(html)
      Cypress.$('body').empty()
      Cypress.$('body').append(worksheetAsTable)
    })

  // Now test the HTML table with Cypress commands
  cy.get('table tr:nth-child(3) td:nth-child(3)')
    .invoke('text')
    .should('eq', 'Hashimoto')

  // Or simply assert the text is present
  cy.get('body').should('contain', 'Hashimoto')

})
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述