我正在编写一个自动化测试(更像是一个脚本),在这里我去一个URL,然后单击一个带我到动态URL的页面的按钮。现在,我需要转到一个预定义的URL,然后在该处执行一些操作,之后,需要返回到先前保存的动态URL,并在此处进行验证。根据this stackoverflow question中的答案,我在下面尝试了一下,但没有成功:
it('Saves current url, goes to a new url, goes back to previously saved url', () => {
let currentUrl = null
cy.url().then(tempVar => {
currentUrl = tempVar
})
cy.visit('https://a-new-url')
cy.pause() // To pause execution and see the url changing
cy.visit(currentUrl)
})
导致错误文本:
没有重载匹配此调用。重载1,共2个,“((url:字符串,选项?:部分|未定义):可链接)”,出现以下错误。类型“ null”的参数不能分配给类型“ string”的参数。重载2之2,'((options:Partial&{url:string;}):Chainable',给出以下错误。类型为'null'的参数不能分配给类型为'Partial&{url:string; }'。无法将类型“ null”分配给类型“ Partial”。ts(2769)
[我们团队中的一位开发人员帮助我提供了以下效果很好的代码:
it('Saves current url, goes to a new url, goes back to previously saved url', async () => {
let currentUrl = await new Promise<string>(resolve => cy.url().then(tempVar => {
resolve(tempVar)
}))
cy.visit('https://a-new-url')
cy.pause() // So that you can pause execution and see the url changing
cy.visit(currentUrl) // Successfully takes you back to the old url
})