2

私はcucumberjsで比較的単純なシナリオを実行しようとしています。つまり、シナリオが失敗した後、次のシナリオの初期状態に戻るようにブラウザを再起動したいと思います。テストシナリオの終わりに実行される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'); 

     }); 

    } 

}); 

です。フレームワークは、次のテストシナリオでブラウザを使用するために周りに来るときしかし、それは私がなぜこの出来事があると私は何をすべきかが必要ですので、私は、ブラウザを使用することができたとし、次の

[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レポートに変換されたときのスクリーンショットは、通常通りに生成されています。

答えて

0

私は多分あなたはこれを試すことができ、同じコードを持っていますが、コールバックを使用して:

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(); 
     } 
    }); 
関連する問題