从 cypress 中的函数返回一个值

rin*_*ino 5 cypress

import {StudentDetails} from "../Department"

let studentInfo = new StudentDetails();
let studName: any = '';

it('Get Student Name', function(){
    studentInfo.getStudName();
    studName = studentInfo.getStudName();
    cy.log(studName);
})
Run Code Online (Sandbox Code Playgroud)

部门档案:

export class StudentDetails{
getStudName(){
cy.get('app-screen').find('input[id="studentName"]').invoke('val').as('name')
cy.get('@name').then((name) => {
  cy.log('Student Name: ' + name)
  return name
})
}
Run Code Online (Sandbox Code Playgroud)

上面的脚本不返回学生姓名。相反,它显示以下错误。有人可以帮忙解决这个问题吗?

cy.then() 失败,因为您混淆了异步和同步代码。在回调函数中,您调用了 1 个或多个 cy 命令,但随后返回了一个同步值。

Cypress 命令是异步的,将 cy 命令排队并返回同步值是没有意义的。

您可能忘记使用另一个 cy.then() 正确链接 cy 命令。

Luk*_*rys 7

正如它所说,你不能只以同步方式返回一个值。您应该返回整个链并then在测试本身中使用。

getStudName(){
 return cy.get('appscreen').find('input[id="studentName"]').invoke('val')
}
Run Code Online (Sandbox Code Playgroud)
it('Get Student Name', function(){
  studentInfo.getStudName().then((name) => {
    cy.log('Student Name: ' + name)
  })
})
Run Code Online (Sandbox Code Playgroud)