Javascript selenium webdriver错误处理

Javascript selenium webdriver错误处理,javascript,node.js,selenium,webdriver,Javascript,Node.js,Selenium,Webdriver,当我使用SeleniumWebDriver的javascript/NodeJSAPI优雅地运行以下测试时,可能会引发一些异常,但错误信息通常过于笼统,我想知道有关错误的更多细节。例如:下面的代码可能会出现“no-soke-element”异常,但我如何知道找不到哪个元素 driver.controlFlow().execute(function(){ var el1 = driver.findElement(locator1); //maybe get a no such

当我使用SeleniumWebDriver的javascript/NodeJSAPI优雅地运行以下测试时,可能会引发一些异常,但错误信息通常过于笼统,我想知道有关错误的更多细节。例如:下面的代码可能会出现“no-soke-element”异常,但我如何知道找不到哪个元素

driver.controlFlow().execute(function(){
    var el1 = driver.findElement(locator1);        //maybe get a no such elment exception
    el1.click();
    var el2 = driver.findElement(locator2);        //maybe get a no such elment exception
    el2.clear();
    var el3 = driver.findElement(locator3);        //maybe get a no such elment exception
    el3.sendKeys('xxx');
}).thenCatch(function(err){
    //boom!  no such element, but i wanna know which locator not found?!!
})
错误:

    { [NoSuchElementError: no such element
    (Session info: chrome=46.0.2490.86)
    (Driver info: chromedriver=2.16.333243                             (0bfa1d3575fc1044244f21ddb82bf870944ef961),platform=Mac OS X 10.10.1 x86_64)]
    code: 7,
    state: 'no such element',
    message: 'no such element\n  (Session info: chrome=46.0.2490.86)\n     (Driver info: chromedriver=2.16.333243   (0bfa1d3575fc1044244f21ddb82bf870944ef961),platform=Mac OS X 10.10.1 x86_64)',
    name: 'NoSuchElementError',
    stack: 'NoSuchElementError: no such element\n  (Session info: chrome=46.0.2490.86)\n  (Driver info: chromedriver=2.16.333243 (0bfa1d3575fc1044244f21ddb82bf870944ef961),platform=Mac OS X 10.10.1 x86_64)\n    at new bot.Error (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-webdriver/lib/atoms/error.js:108:18)\n    at Object.bot.response.checkResponse (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-  webdriver/lib/atoms/response.js:109:9)\n    at /Users/bjhl/dev/codebase/sbot/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:379:20\n    at   promise.ControlFlow.runInFrame_   (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-    webdriver/lib/goog/../webdriver/promise.js:1857:20)\n    at goog.defineClass.notify (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:2448:25)\n    at promise.Promise.notify_ (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:564:12)\n    at Array.forEach (native)\n    at promise.Promise.notifyAll_ (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:553:15)\n    at goog.async.run.processWorkQueue (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-webdriver/lib/goog/async/run.js:130:15)\n    at runMicrotasksCallback (node.js:337:7)\nFrom: Task: WebElement.sendKeys()\n    at webdriver.WebDriver.schedule (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:362:15)\n    at webdriver.WebElement.schedule_ (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:1817:23)\n    at webdriver.WebElement.sendKeys (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:1988:17)\n    at /Users/bjhl/dev/codebase/sbot/test/testbot/other.js:8:8\n    at promise.ControlFlow.runInFrame_ (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:1857:20)\n    at promise.ControlFlow.runEventLoop_ (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:1729:8)\n    at eval (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-webdriver/lib/goog/../webdriver/promise.js:2043:12)\n    at goog.async.run.processWorkQueue (/Users/bjhl/dev/codebase/sbot/node_modules/selenium-webdriver/lib/goog/async/run.js:130:15)\n    at runMicrotasksCallback     (node.js:337:7)\n    at process._tickCallback (node.js:355:11)\nFrom: Task: <anonymous>\n    at Object.<anonymous> (/Users/bjhl/dev/codebase/sbot/test/testbot/other.js:5:22)\n    at Module._compile (module.js:460:26)\n    at Object.Module._extensions..js (module.js:478:10)\n    at Module.load (module.js:355:32)\n    at Function.Module._load (module.js:310:12)\n    at Function.Module.runMain (module.js:501:10)\n    at startup (node.js:129:16)\n    at node.js:814:3' }

如何编写代码并优雅地处理错误

可以插入错误吗?可以插入错误吗?
driver.controlFlow().execute(function(){
    driver.findElement(locator1).click().thenCatch(function(e){
        console.error('maybe locator1 not found');
        return webdriver.promise.rejected(err); 
    })
    driver.findElement(locator2).click().thenCatch(function(e){
        console.error('maybe locator2 not found');
        return webdriver.promise.rejected(err); 
    })
.thenCatch(function(e){
    //boom! no such element!!
})