2

我試圖做一個相對簡單的方案與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'); 

     }); 

    } 

}); 

它在一個cucumberjs鉤子中實現,它在測試場景結束時運行。然而,當框架惡有惡報使用瀏覽器在未來的測試場景,它拋出類似下面

[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(); 
     } 
    });