我有一个前端的Angular 应用程序,我正在实施 cypress 测试.

事情并不总是正确读取XLSX文件虽然.

如果我这么做了:

cy.readFile('cypress/downloads/myfile.XLSX');

事实上,它确实像预期的那样读取了文件.

但是,如果我这样做:

cy.readFile('cypress/downloads/myfile.XLSX').should('contain', 'mytext');

它不读'mytext',即使我知道它是在文件中.

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

有没有办法让cypress查找带有.XLSX文件的文本?

多谢了.

推荐答案

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

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

enter image description here

在读取该文件之后,我将其转换为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')

})

enter image description here

Angular相关问答推荐

为什么当没有可观察对象发出值时,我的RxJS合并订阅会触发?

Angular 信号:编程信号量

Angular ngModel双向数据绑定不适用于表单中的Select元素

iOS Mobile Safari - HTML5视频覆盖一切

以Angular 动态添加和删除组件形状元素

Angular -移位在2个示波器中读取

当可观察到的更改时,异步管道不更新视图

Angular Mat Select 显示键盘焦点和鼠标悬停焦点的问题

相同的 Angular 代码在生产环境中停止工作

如何根据响应变化更改 Angular Carousel 的cellsToShow

PrimeNG 避免在同一位置使用不同键的 cogo toast 重叠

BehaviorSubject 在 Angular 中制作数据之间的时间表(或计时器)

ng14中具有强类型表单的FormBuilder

如何从 RxJS 重试中排除某些 url

Angular 2在单击子项时防止单击父项

如何组合两个可观察到的结果?

Angular 2 http 没有得到

得到了预期表达式的插值 ({{}})

@HostBinding 与 Angular 中的变量类

没有 ChildrenOutletContexts 的提供者 (injectionError)