首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Cypress.io进行E2E测试的文件上传错误API

使用Cypress.io进行E2E测试的文件上传错误API
EN

Stack Overflow用户
提问于 2020-12-08 01:26:22
回答 2查看 373关注 0票数 0

我正在用Cypress.io测试一个门户,它具有文件上传功能。

但是我的文件总是无法上传,因为API调用出错了。

正确的API调用:

**

/etl/v1.0.0/datauploaderetl/spaces/etl_jyddc0tx/data-files 200

POST

**

但是,当通过Cypress上传时,以下是URL:**

POST 404 /etl/v1.0.0/datauploaderetl/data-file

**您可以清楚地看到,API是不正确的。我在这里加上了等待,但是,它不起作用。以下是代码:

代码语言:javascript
复制
cy.fixture(fileName1).then(fileContent => {
        cy.get('input[type="file"]').attachFile({
            fileContent: fileContent.toString(),
            fileName: fileName1,
            mimeType: fileType
        })
    });
    cy.waitUntil(() => cy.get(":nth-child(98) > .modal > .modal-lg > .modal-content > .modal-body")
        .should('contain.text', 'Status: completed')
    );

请帮帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-10 05:39:53

在Command.js,添加以下代码:

代码语言:javascript
复制
let LOCAL_STORAGE_MEMORY = {};

Cypress.Commands.add("saveLocalStorage", () => {
    Object.keys(localStorage).forEach(key => {
        LOCAL_STORAGE_MEMORY[key] = localStorage[key];
    });
});

Cypress.Commands.add("restoreLocalStorage", () => {
    Object.keys(LOCAL_STORAGE_MEMORY).forEach(key => {
        localStorage.setItem(key, LOCAL_STORAGE_MEMORY[key]);
    });
});

然后,在测试用例文件中,分别添加下面的beforeEach和afterEach块:

代码语言:javascript
复制
 beforeEach(() => {
        cy.restoreLocalStorage();
    })

    afterEach(() => {
        cy.saveLocalStorage();
    })

这将解决Cypress在浏览器中清除“本地存储”的问题。

票数 1
EN

Stack Overflow用户

发布于 2020-12-08 10:14:41

根据文档,这是上传文件的方式:

代码语言:javascript
复制
cy.fixture('filepath').as('filetoupload')
cy.get('input[type=file]').then(function($input) {
  // convert the logo base64 string to a blob
  const blob = Cypress.Blob.base64StringToBlob(this.filetoupload, fileType)
  $input.fileupload('add', { files: blob })
})

cy.fixture('filepath').as('filetoupload')

代码语言:javascript
复制
cy.get('input[type=file]').then(function(el) {
  // convert the logo base64 string to a blob
  const blob = Cypress.Blob.base64StringToBlob(this.filetoupload,fileType )

  const file = new File([blob], '<path>', { type: fileType })
  const list = new DataTransfer()

  list.items.add(file)
  const myFileList = list.files

  el[0].files = myFileList
  el[0].dispatchEvent(new Event('change', { bubbles: true }))
})

https://docs.cypress.io/api/utilities/blob.html#Image-Fixture

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65191778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档