Javascript 带expect的if-else语句的量角器
我有三个代码,我想检查其中一个是否存在。当我运行代码时,我会收到一条消息,上面写着“Expected false to true”。我做错了什么Javascript 带expect的if-else语句的量角器,javascript,automation,jasmine,protractor,Javascript,Automation,Jasmine,Protractor,我有三个代码,我想检查其中一个是否存在。当我运行代码时,我会收到一条消息,上面写着“Expected false to true”。我做错了什么 var Ecode1 = element(by.xpath('.//*[contains(text(),\'201\')]')); var Ecode2 = element(by.xpath('.//*[contains(text(),\'202\')]')); var Ecode3 = element(by.xpath('.//*[conta
var Ecode1 = element(by.xpath('.//*[contains(text(),\'201\')]'));
var Ecode2 = element(by.xpath('.//*[contains(text(),\'202\')]'));
var Ecode3 = element(by.xpath('.//*[contains(text(),\'501\')]'));
if (expect(Ecode1.isPresent()).toBe(true)) {
//ecode1 rules
}
else if (expect(Ecode2.isPresent()).toBe(true)) {
//ecode2 rules
}
else if (expect(Ecode3.isPresent()).toBe(true)) {
//ecode3 rules
}
else {
browser.close();
}
只要
isPresent
是承诺,解决方案就是:
异步/等待
方法:
if (await Ecode1.isPresent()) {
} else if (await Ecode2.isPresent()) {
} else if (await Ecode3.isPresent()) {
} else {
browser.close();
}
Web驱动程序控制流
方法非常难看,需要额外的复杂性:
Promise.all([
Ecode1.isPresent(),
Ecode2.isPresent(),
Ecode3.isPresent()
]).then((result)=>{
// Ecode1 present
if(result[0]) {
}
// Ecode2 present
else if(result[1]) {
}
// Ecode3 present
else if(result[2]) {
}
else {
browser.close();
}
});
另外,
如果语句是冗余的,则在下使用expect
,只要呈现是承诺,解决方案如下:
异步/等待
方法:
if (await Ecode1.isPresent()) {
} else if (await Ecode2.isPresent()) {
} else if (await Ecode3.isPresent()) {
} else {
browser.close();
}
Web驱动程序控制流
方法非常难看,需要额外的复杂性:
Promise.all([
Ecode1.isPresent(),
Ecode2.isPresent(),
Ecode3.isPresent()
]).then((result)=>{
// Ecode1 present
if(result[0]) {
}
// Ecode2 present
else if(result[1]) {
}
// Ecode3 present
else if(result[2]) {
}
else {
browser.close();
}
});
另外,if
下的expect
语句是冗余的我在第二个if语句下有一个条件。我基本上是不及格。即使强制力失败,它也会跳过一段时间。有什么想法吗?if(Ecode1.isPresent()){//Ecode1 rules}else if(Ecode2.isPresent()){抛出新错误(msg | | |'测试失败');}else if(Ecode3.isPresent()){//Ecode3 rules}else{browser.close();@yong-如果edcode1不存在,它应该转到右边的下一个块。@yong,我试过了,它仍然会转到第一个if语句:if(Ecode1.isPresent()){//Ecode1 rules console.log('CHKPT.1');}否则if(Ecode2.isPresent()){console.log('CHKPT.2');抛出新错误(msg | |'Test failed');}else if(Ecode3.isPresent()){//Ecode3 rules console.log('CHKPT.3');}else{console.log('CHKPT.4');browser.close();}@automation您有什么方法?异步/等待
或webdriver控制流
?谢谢。“isPresent”是一个布尔值。我想这就是问题所在。你的解决方案起作用了。我的第二个if语句中有一个条件。我基本上是强制失败。即使it应该强制失败,它也会跳过一个。知道吗?if(Ecode1.isPresent()){//ecode1 rules}else if(Ecode2.isPresent()){抛出新错误(msg | |'Test failed');}else if(Ecode3.isPresent()){//Ecode3 rules}else{browser.close();@yong-如果edcode1不存在,它应该转到右边的下一个块。@yong,我试过了,它仍然会转到第一个if语句:if(Ecode1.isPresent()){//Ecode1 rules console.log('CHKPT.1');}否则if(Ecode2.isPresent()){console.log('CHKPT.2');抛出新错误(msg | |'Test failed');}else if(Ecode3.isPresent()){//Ecode3 rules console.log('CHKPT.3');}else{console.log('CHKPT.4');browser.close();}@automation您有什么方法?异步/等待
或webdriver控制流
?谢谢。“isPresent”我想这就是问题所在。你的解决方案奏效了。