为什么Testcafe忽略If Else If语句的第一个条件

时间:2018-09-29 18:49:09

标签: javascript assertion testcafe

我的应用程序中存在以下安全问题

  1. 您的第一个电话号码是什么?
  2. 您最喜欢的颜色是什么?
  3. 您最喜欢的运动队是谁?

下面是代码的一部分

export default class webPage {
constructor () {
this.securityQuestion = Selector('#challengeQuestionLabelId');
this.sportQuestion    = this.securityQuestion.withText('sports');
this.colorQuestion    = this.securityQuestion.withText('color');
this.phoneQuestion    = this.securityQuestion.withText('phone');

}
}

有条件的陈述

async answerSecurityQuestion() { 
                 var myAnswer; 

                 if ( await this.webPage.colorQuestion.exists ) { 
                     myAnswer = "color1"; 
                 } else if ( await this.webPage.phoneQuestion.exists ) { 
                     myAnswer = "phone1"; 
                 } else {
                     myAnswer = "sports1"; 
                 }

问题在第一个if语句中。即使问题中包含“颜色”,代码也无法在if方面第一个标识。

我改变了语句的顺序,发现问题不在选择器中,而是在第一个if语句中。

有人知道如何解决此问题吗?

2 个答案:

答案 0 :(得分:2)

在下面的await语句中添加可解决此问题。

await t.wait(3000);

答案 1 :(得分:1)

我认为您需要几个括号:

async answerSecurityQuestion() { 

             var myAnswer; 

             if ( (await this.webPage.colorQuestion).exists ) { 
                 myAnswer = "color1"; 
             } else if ( (await this.webPage.phoneQuestion).exists ) { 
                 myAnswer = "phone1"; 
             } else {
                 myAnswer = "sports1"; 
             }

}

也就是说,您正在等待括号中的内容,对吧?