Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带expect的if-else语句的量角器_Javascript_Automation_Jasmine_Protractor - Fatal编程技术网

Javascript 带expect的if-else语句的量角器

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

我有三个代码,我想检查其中一个是否存在。当我运行代码时,我会收到一条消息,上面写着“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('.//*[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”我想这就是问题所在。你的解决方案奏效了。