在使用CucumberJs进行场景失败后,截图并重新启动浏览器
我想用cucumberjs做一个相对简单的场景。 即在场景失败后,我想重新启动浏览器,以便它回到下一个场景的初始状态。 这是我的尝试
this.After({timeout: 30 * 1000}, function (scenario) { if(scenario.isFailed()) { return browser.takeScreenshot().then(function (buffer) { console.log("Restarting The Browser As We Got A Failure"); browser.restart(); console.log("Finished Restarting The Browser"); return scenario.attach(new Buffer(buffer, 'base64'), 'image/png'); }); } });
它是在testing场景结束时运行的cucumberjs钩子中实现的。 但是,当框架在下一个testing场景中使用浏览器时,会引发如下exception
[firefox #01] Step Definition: StepDefinitions\_Lpewf_Tc_04_steps.js:6 [firefox #01] Message: [firefox #01] UnsupportedOperationError: This driver instance does not have a valid session ID (did you call WebDriver.quit()?) and may no longer be used. [firefox #01] at WebDriverError (C:\Users\bxb145\WebstormProjects\_System_Test_Project\node_modules\protractor\node_modules\selenium-webdriver\error.js:26:26) [firefox #01] at UnsupportedOperationError (C:\Users\bxb145\WebstormProjects\_System_Test_Project\node_modules\protractor\node_modules\selenium-webdriver\error.js:435:26) [firefox #01] at checkHasNotQuit (C:\Users\bxb145\WebstormProjects\_System_Test_Project\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:378:15) [firefox #01] at WebDriver.schedule (C:\Users\bxb145\WebstormProjects\_System_Test_Project\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:323:5) [firefox #01] at WebDriver.findElements (C:\Users\bxb145\WebstormProjects\_System_Test_Project\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver.js:897:22) [firefox #01] at C:\Users\bxb145\WebstormProjects\_System_Test_Project\node_modules\protractor\built\element.js:141:44 [firefox #01] at Promise.invokeCallback_ (C:\Users\bxb145\WebstormProjects\_System_Test_Project\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:1329:14) [firefox #01] at TaskQueue.execute_ (C:\Users\bxb145\WebstormProjects\_System_Test_Project\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2790:14) [firefox #01] at TaskQueue.executeNext_ (C:\Users\bxb145\WebstormProjects\_System_Test_Project\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2773:21) [firefox #01] at C:\Users\bxb145\WebstormProjects\_System_Test_Project\node_modules\protractor\node_modules\selenium-webdriver\lib\promise.js:2652:27 [firefox #01] Error [firefox #01] at ElementArrayFinder.applyAction_ (C:\Users\bxb145\WebstormProjects\_System_Test_Project\node_modules\protractor\built\element.js:371:27) [firefox #01] at ElementArrayFinder._this.(anonymous function) [as sendKeys] (C:\Users\bxb145\WebstormProjects\_System_Test_Project\node_modules\protractor\built\element.js:83:30) [firefox #01] at ElementFinder._this.(anonymous function) [as sendKeys] (C:\Users\bxb145\WebstormProjects\_System_Test_Project\node_modules\protractor\built\element.js:685:22) [firefox #01] at [object Object].EmployerEnterCodeAndLogin (C:\Users\bxb145\WebstormProjects\_System_Test_Project\PageObject\_External_Login_Page.js:181:38) [firefox #01] at ModuleLoginPageExternal.EnterEmployeeCodeAndContinue (C:\Users\bxb145\WebstormProjects\_System_Test_Project\ModuleHelper\_Module_External_Login.js:27:40) [firefox #01] at World.<anonymous> (C:\Users\bxb145\WebstormProjects\_System_Test_Project\StepDefinitions\_Lpewf_Tc_04_steps.js:22:47)
我想这是为什么发生这种情况,我需要做什么,所以我可以浏览器失败/重新启动后,按常规再次使用浏览器。 提前谢谢了。 顺便说一句,当JSON被转换为HTML报告时,正常情况下会生成屏幕截图。
我其实认为这是与github上引用的以下问题有关
https://github.com/angular/protractor/issues/2001
使用callback不能解决这个:(
无论如何,我已经开了一个新的问题来解决这个问题
我有相同的代码,但使用callback,也许你可以试试这个:
this.After(function (scenario, callback) { if (scenario.isFailed()) { browser.takeScreenshot().then(function (base64png) { var decodedImage = new Buffer(base64png, 'base64'); scenario.attach(decodedImage, 'image/png'); callback(); }, function (err) { callback(err); }); } else { callback(); } });
- 在mongodb / node中存储敏感数据
- SyntaxError:在使用第三方模块时,在Angular 2 Universal中意外的令牌导入
- e2e与jenkins,selenium网格和量angular器testing
- Angular 2:NodeJS与XAMPP
- 如何解决与cordova运行Angular 2错误(也许在WebPack)?
- 响应中的'Access-Control-Allow-Credentials'标题是'',必须是'true'
- validationsendKeys导致页面对象文件导致未定义的错误(量angular器)
- 在angular2快速入门指南中使用lite-server打开非默认浏览器
- 每次如何引用本地安装的Angular2 bundle而不是“npm install”?