我正在尝试从元素(输入标签)获取文本并将其存储在变量中。
以下语句用于在文本字段中设置数据。
cy.get('app-screen).find('input[id="studentName"]').type("Viola");
Run Code Online (Sandbox Code Playgroud)
尝试使用以下语句来获取文本:
cy.get('app-screen).find('input[id="studentName"]').then(($text1) => {
let textValue1 = $text1.text());
cy.log('Student Name: ' + textValue1 );
});
cy.get('app-screen).find('input[id="studentName"]').invoke('text').then(text2 => {
let textValue2 = text2;
cy.log('Student Name: ' + textValue2 );
});
Run Code Online (Sandbox Code Playgroud)
这两种方式的输出都是空的,如下所示。
Student Name:
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙解决这个问题吗?
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 命令。
cypress ×2