javascript - 函数在 cypress.io 中返回未定义
问题描述
以下代码在测试中运行良好。
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}");
解决方案
如果您删除别名并将返回值视为 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}");
});
推荐阅读
- javascript - 如何在新行 TinyMCE 上保留格式
- java - Java 在未来某个时间运行事件
- primefaces - Primefaces jqplot条形图自定义工具提示-百分比值
- amazon-web-services - 如何在 DynamoDB 中处理最终一致的读取
- itext - itext 7 相当于 itext5 中的 getUnderContent 是什么?
- hyperledger-fabric - 当我尝试以参与者身份登录我的业务网络以访问该交易记录时,我遇到了以下错误:
- dynamics-crm - 如何选择 Dynamics CRM 参考属性?
- twitter-bootstrap - Bootstrap:在某些特定情况下使用断点,即 col-md-auto justify-content-md-center
- android - Gradle 已过时引发错误而不是警告
- c# - 访问自签名证书详细信息