簡體   English   中英

"如何從 cypress 測試中刪除“_fs.readFileSync 不是函數”錯誤"

[英]How to remove "_fs.readFileSync is not a function" error from cypress test

我想從我的 excel 表的特定單元格中讀取數據,然后在我的柏樹測試中使用該數據。 文件名為“qaautomation.xlsx”,工作表名稱為“Input”,我想從單元格 B2 中讀取數據。 我編寫了以下代碼來訪問該值

 /// <reference types ="cypress" />
var xlsx = require ("xlsx");
var workbook= xlsx.readFile("qaautomation.xlsx");
var worksheet= workbook.Sheets["Input"];
var cellB2value= 'B2';
var cellB2=worksheet[cellB2value];
var cellB2_value=(cellB2.v);

這是 XLSX 讀取函數如何處理 webpack 和瀏覽器的安全功能不直接訪問文件系統的問題。

您需要通過 ajax 調用讀取文件,然后以這種方式將其“讀”到 xlsx 中。 這里有一個演示:

https://github.com/SheetJS/sheetjs/tree/master/demos/xhr

fetch(url).then(function(res) {
  /* get the data as a Blob */
  if(!res.ok) throw new Error("fetch failed");
  return res.arrayBuffer();
}).then(function(ab) {
  /* parse the data when it is received */
  var data = new Uint8Array(ab);
  var workbook = XLSX.read(data, {type:"array"});

  /* DO SOMETHING WITH workbook HERE */
});

好吧..如果您使用的是(相對)較新版本的cypress ,則有專門的 API: https ://docs.cypress.io/api/commands/writefile#Examples

從文檔:

cy.writeFile('path/to/message.txt', 'Hello World')
cy.readFile('path/to/message.txt').then((text) => {
  expect(text).to.equal('Hello World') // true
})

耶!

將導致該功能的功能移動到cypress/support/例如在commands.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM