【问题标题】:Function returns undefined in cypress.io函数在 cypress.io 中返回未定义
【发布时间】:2021-01-07 14:19:15
【问题描述】:

以下代码在测试中运行良好。

cy.get("table").find(`tr[data-index=0] > :nth-child(1)`).then($td => { 
    cy.get("input").type($td.text().trim() + "{enter}");
});

但是这个,函数中的相同代码,不会

const getResult = () => {
    cy.get("table", {timeout: 60000}).find(`tr[data-index=0] > :nth-child(1)`, {timeout: 60000}).then($td => {
        return $td.text().trim()
    });
}

it("query", () => {
    cy.get("input").type(getResult() + "{enter}");
})

我对柏树中的then() 缺少什么?

目的当然是获取表格第一个单元格的内容,并在input字段中输入。

编辑: 遵循@jean-smaug 的建议,我尝试了这个invoke/as 但我收到错误Cannot read property 'text' of undefined。实际上,该函数位于不同的 ES 模块中,并且上下文不同。代码:

// different ES module
export const getResult = () => {
    cy.get("table").find(`tr[data-index=0] > :nth-child(1)`).invoke("text").as("text")
} 

// test
getResult("opencga-file-grid")
cy.get("input").type(this.text + "{enter}");

【问题讨论】:

标签: javascript cypress end-to-end


【解决方案1】:

如果您删除别名并将返回值视为 Cypress Chainable,则您的最后一个示例有效。

// different ES module
export const getResult = () => {
  return cy.get("table").find(`tr[data-index=0] > :nth-child(1)`).invoke("text");
} 

// test
getResult("opencga-file-grid")
  .then(text => {
    cy.get("input").type(text + "{enter}");
  });

相当于这个(如果所有代码都在同一个文件中)

cy.get("table").find(`tr[data-index=0] > :nth-child(1)`).invoke("text")
  .then(text => {
    cy.get("input").type(text + "{enter}");
  });

【讨论】:

    【解决方案2】:

    问题是如何在 Cypress 中访问变量。

    这部分文档应该会有所帮助

    https://docs.cypress.io/guides/core-concepts/variables-and-aliases.html#Sharing-Context

    我猜你可以做这样的事情

    cy.get("table", {timeout: 60000}).find(`tr[data-index=0] > :nth-child(1)`, {timeout: 60000}).invoke('text').as('text')
    
    cy.get("input").type(this.text + "{enter}");
    

    【讨论】:

    • 我真的需要这样的东西吗?我只是从函数返回一个值,而不是在测试之间共享数据
    • 是的,我认为你必须这样做。即使有一个then,它也不是真正的承诺。所以即使使用 await docs.cypress.io/faq/questions/… 也不会得到返回值
    • 尝试将代码放在 getResult 函数之外
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-22
    • 2019-01-07
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多