【问题标题】:Protractor if else statement with expect量角器 if else 语句与期望
【发布时间】:2019-08-08 19:23:42
【问题描述】:

我有三个代码,我想检查其中一个是否存在。当我运行我的代码时,我收到一条消息,上面写着“预期为真”。我做错了什么

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();
  }

【问题讨论】:

    标签: javascript automation jasmine protractor


    【解决方案1】:

    只要isPresent 是承诺,就像解决方案一样:

    async/await 方法:

    if (await Ecode1.isPresent()) {
    
    } else if (await Ecode2.isPresent()) {
    
    } else if (await Ecode3.isPresent()) {
    
    } else {
      browser.close();
    }
    

    Web Driver Control Flow 方法非常丑陋,需要额外的复杂性:

    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 语句是多余的

    【讨论】:

    • 我的第二个 if 语句有一个条件。我基本上是强制失败的。即使它应该强制失败,它也会跳过它。任何想法? if (Ecode1.isPresent()) { //ecode1 规则 } else if (Ecode2.isPresent()) { throw new Error(msg || 'Test failed'); } else if (Ecode3.isPresent()) { //ecode3 规则 } else { browser.close();
    • @yong - 如果 edcode1 不存在,它应该转到下一个块。
    • @yong ,我试过了,它仍然总是转到第一个 if 语句: if (Ecode1.isPresent()) { //ecode1 rules console.log('CHKPT.1'); } else if (Ecode2.isPresent()) { console.log('CHKPT.2'); throw new Error(msg || '测试失败'); } else if (Ecode3.isPresent()) { //ecode3 规则 console.log('CHKPT.3'); } else { console.log('CHKPT. 4');浏览器.close(); }
    • @automationG 你有什么方法? async/await 或 webdriver control flow?
    • 谢谢。 “存在”是一个布尔值,我想这就是问题所在。你的解决方案奏效了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2020-11-28
    • 2013-05-12
    • 2020-11-23
    相关资源
    最近更新 更多