【问题标题】:Trouble trying to use lib protractor-intercept : probably a Javascript async issue尝试使用 lib protractor-intercept 时遇到问题:可能是 Javascript 异步问题
【发布时间】:2021-07-14 20:29:06
【问题描述】:

我在尝试使用 lib protractor-intercept 时遇到问题,我认为这可能是我遇到的 Javascript 异步问题。此代码有效,但不会打印出console.log 行。知道我怎么可能弄错了吗?

When('the {string} button is clicked', async (buttonName: string) => {
 var intercept = new Intercept(browser);
 intercept.addListener();
 await page.submitApplication(buttonName);
 intercept.getRequests().then(function(reqs) {
   console.log("Intercepted!! " + reqs);
   //TODO extract a value from submit http query response
 });
 await page.waitForSpinnerButtonFinish();
});

这是我的页面对象方法:

  submitApplication(buttonName: string) {
    return new Promise(function (resolve) {
      var promised = element(by.css('app form')).element(
         by.cssContainingText('button span', buttonName)).click();
      return resolve(promised);
    });
  }

【问题讨论】:

    标签: async-await protractor webdriver-io intercept


    【解决方案1】:

    我没有找到 intercept.addListener(); 返回的文档,但为了安全起见,我会选择 await。然后我不会将.then 与await 混合使用。看看这是否会起作用

    submitApplication(buttonName: string) {
        return element(by.css('app form'))
          .element(by.cssContainingText('button span', buttonName))
          .click();
        });
      }
    
    When('the {string} button is clicked', async (buttonName: string) => {
     var intercept = new Intercept(browser);
     await intercept.addListener();
     await page.submitApplication(buttonName);
     let reqs = await intercept.getRequests()
     console.log("Intercepted!! " + reqs);
     await page.waitForSpinnerButtonFinish();
    });
    

    【讨论】:

    • 谢谢,这似乎让我畅通无阻。谢谢你。澄清了我对等待的理解的几件事。
    • 是的,简而言之,无论返回 Promise,都需要 await。如果您不确定该命令返回什么,请查看该命令的文档
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    相关资源
    最近更新 更多