如何在Node中为WebDriverJS注册错误处理程序?

时间:2014-01-14 23:59:46

标签: javascript node.js selenium-webdriver

按照文档中的说明尝试注册错误处理程序时,出现错误:

  

注册一个事件监听器,以便在有时通知   未处理的错误。

     

webdriver.promise.Application。       的getInstance()。       on('uncaughtException',function(e){         console.error('有一个未被捕获的例外:'+ e.message);       });

TypeError: Cannot call method 'getInstance' of undefined

注册错误处理程序的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

在搜索WebDriverJS源代码时,我发现了这个:

https://code.google.com/p/selenium/source/browse/javascript/webdriver/promise.js?r=9d98523583afb01a9c5af7125770081d2a3a2210

webdriver.promise.Application = {};
  webdriver.promise.Application.getInstance = function() {
    webdriver.promise.logDeprecation_(
        'webdriver.promise.Application#getInstance()',
        'webdriver.promise.controlFlow()');
    return webdriver.promise.controlFlow();
  };

显然,正确的方法是使用:

webdriver.promise.controlFlow().on('uncaughtException', function(e) {
        console.error('There was an unhandled exception! ' + e);
    });

我已经对此进行了测试,但确实有效。

(显然我使用的selenium-webdriver的版本没有包含此弃用警告,而只是失败了。)

更新

  webdriver.promise.logDeprecation_ = function(oldSig, newSig) {
    if (window.console) {
      window.console.log(
          'Using deprecated ' + oldSig + ', use ' + newSig +
          'instead. This will stop working in Selenium 2.31');
    }   };

我正在使用Selenium 2.32。

答案 1 :(得分:0)

now已弃用controlFlow,我如何捕获异常?