Testing 在cypress中获取用于.visit()调用的字符串

Testing 在cypress中获取用于.visit()调用的字符串,testing,cypress,Testing,Cypress,我有一个dom元素,它包含我想要访问的字符串或url。为了便于参考,我用数据属性标记了dom元素 上面以粗体显示“Create Topic”的是字符串,在控制台中,您可以看到它有一个data test='topicUrl属性 我想捕获这个字符串值,以便稍后访问url 我跟着试了试 cy.get('[data-test="topicUrl"]').invoke('text').as('Url') 这样我就可以使用 cy.visit(this.Url) 但这不起作用,它会出错为TypeErro

我有一个dom元素,它包含我想要访问的字符串或url。为了便于参考,我用数据属性标记了dom元素

上面以粗体显示“Create Topic”的是字符串,在控制台中,您可以看到它有一个
data test='topicUrl
属性

我想捕获这个字符串值,以便稍后访问url

我跟着试了试

cy.get('[data-test="topicUrl"]').invoke('text').as('Url')
这样我就可以使用

cy.visit(this.Url)
但这不起作用,它会出错为
TypeError:cannotreadproperty'Url'of undefined
在控制台中

如何获取DOM元素中的文本,以便在以后使用它访问url?

看到几天前的这个问题,我认为
this.url
语法并不是万能的。您引用的文档指的是“mochas共享上下文对象”和“在测试之间自动清除别名”

这让我想到,当别名设置在beforeach()中时,只能使用
This.Url

你可以试试下面的方法

cy.get('[data test=“topicUrl”]')。调用('text')。作为('Url'))
...
cy.get('@Url')。然后(Url=>cy.visit(Url))
尽管如此,这感觉更像是一次点击,而不是访问,因为url看起来是相对于当前站点的

cy.get('[data test=“topicUrl”]')。单击()
cy.wait(100)//可能需要等待
或者来自cypress示例_spec.js的第847行

cy.get('[data test=“topicUrl”]')。作为('Url'))
...
cy.get('@Url')。单击()

您可以将其缓存到变量中,并在回调中发出
cy.visit
,以确保变量已填充:

let url;
cy.get('[data-test="topicUrl"]').invoke('text')
    .then( value => {
        url = value;
    });

cy.then(() => {

    return cy.visit(url);
});
直接使用
cy.then()
(而不是将其与另一个命令链接起来)没有文档记录,将来在实现
cy.resolve(promise)
时可能会被删除

也许最好使用
cy.wrap()。然后(()=>{})
它应该永远有效(?)


(完全凭记忆进行,让我知道它是否不工作,我会在有机会运行它时进行更新。)

这是否回答了您的问题?