【问题标题】:console.log messages are appearing before actual task is performedconsole.log 消息在执行实际任务之前出现
【发布时间】:2016-07-05 21:41:15
【问题描述】:

我使用console.log 写了一些关于当前任务/期望由量角器执行的详细消息,但我在控制台上发现这些消息是在浏览器中执行实际任务之前出现的。这样做 -

it('should validate all labels', function() {
    ....
    element.sendKey('name');
    console.log('name entered to user input');
    ...
});

甚至在页面加载到浏览器之前,控制台日志消息就会出现。那么如何解决呢?

【问题讨论】:

  • 使用回调来记录消息,如果函数支持的话。

标签: javascript asynchronous jasmine protractor webdriverjs


【解决方案1】:

这是因为 Protractor 尝试运行它可以运行的任何东西,因为它适用于异步主体。如果您想在规范完成后控制台记录某些内容,请尝试等到上一步的承诺在规范中得到解决。方法如下-

it('should validate all labels', function() {
    ....
    element.sendKeys('name').then(function(){
        console.log('name entered to user input');
    });
    ...
});

以上代码控制台在向元素发送数据后记录您的语句。 More on Protractor promises。希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我同意 Girish 的回答,但如果你真的想独立于其他承诺记录一些东西,你可以做一些“hacky”这样的事情:

    driver.executeScript(function rf(a){return a;}, msg).then(function(s) {
        console.log(s);
    });
    

    【讨论】:

      猜你喜欢
      • 2021-06-25
      • 1970-01-01
      • 2016-10-31
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      • 2021-10-25
      相关资源
      最近更新 更多