Javascript I';在Cypress中使用invoke(';text)时,我的字符串值会被截断为零

Javascript I';在Cypress中使用invoke(';text)时,我的字符串值会被截断为零,javascript,text,cypress,invoke,Javascript,Text,Cypress,Invoke,以下是我的代码行: cy.get('div.thread-header p.text-secondary.small').invoke('text').then((ticket) => { ticketDetails.ticketNumber = ticket }) return ticketDetails web元素div.thread-header p.text-secondary.small,其文本值为Ticket\000-0000091。但是当我使用cy.log(tick

以下是我的代码行:

cy.get('div.thread-header p.text-secondary.small').invoke('text').then((ticket) => {
    ticketDetails.ticketNumber = ticket
})
return ticketDetails
web元素
div.thread-header p.text-secondary.small
,其文本值为Ticket\000-0000091。但是当我使用
cy.log(ticketDetails.ticketNumber)
时,我得到了Ticket#91


目标是按原样获取文本值。有人能帮忙吗?

您的
返回票证详细信息在
.then()回调之前执行

最初返回的是
ticketDetails
中的内容,而不是
ticketDetails.ticketNumber=ticket
的结果

例如,如果我尝试这个

let ticketDetails={
票号:“尚未设置”
}
cy.get('div.thread-header p.text-secondary.small')
.invoke('text')。然后((票证)=>{
ticketDetails.ticketNumber=票证
cy.log(ticketDetails.ticketNumber)
})
cy.log(ticketDetails.ticketNumber)
显示两个日志,第二个日志显示初始值

log    Ticket #000-0000091
log    not-set-yet
但是
cy.log()
消息中的输出是调用的顺序,因为它们是排队的命令,总是按照给定的顺序运行

更改为
console.log()
,您可以看到真正的执行顺序

let ticketDetails={
票号:“尚未设置”
}
cy.get('div.thread-header p.text-secondary.small')
.invoke('text')。然后((票证)=>{
ticketDetails.ticketNumber=票证
console.log(ticketDetails.ticketNumber)
})
console.log(ticketDetails.ticketNumber)
按此顺序给出两个日志,显示最后一个日志先执行

not-set-yet
Ticket #000-0000091

所以您的return语句是在分配任务之前执行的。

您可以发布html DOM的屏幕截图吗?您可以尝试使用invoke('innerHTML')吗