2015-07-13 164 views
3

我目前正在嘗試使用量角器對AngularJS應用程序進行一些E2E測試,並且我遇到了btstrpd錯誤。我是AngularJS的新手(我只是項目中的測試自動化人員),所以我非常感謝有關如何使其運行的任何指示。btstrpd使用量角器測試AngularJS應用程序時出錯

基本上我只是複製和粘貼從量角器教程裏面的配置和規格,將它改編爲我的項目:

// conf.js 
exports.config = { 
    seleniumAddress: 'http://localhost:4444/wd/hub', 
    specs: ['spec.js'], 
    rootElement: 'html' 
} 

// spec.js 
describe('Protractor Demo App', function() { 

    it('should have a title', function() { 
    browser.get('http://myapp.abc.de/ext/#/login'); 
     expect(browser.getTitle()).toEqual('My App'); 
    }); 

}); 

當我適應它,並運行在網絡上的一些隨機AngularJS網站能正常工作。當運行它爲我的當前項目我收到以下錯誤:

 
1) Protractor Demo App should have a title 
Message: 
UnknownError: unknown error: [ng:btstrpd] http://errors.angularjs.org/1.3.15/ng/btstrpd?p0=document 
    (Session info: chrome=43.0.2357.132) 
    (Driver info: chromedriver=2.15.322448 (52179c1b310fec1797c81ea9a20326839860b7d3),platform=Windows NT 6.1 SP1 x86_64) (WARNING: The server did not provide any stacktrace information) 
Command duration or timeout: 9 milliseconds 

完整堆棧跟蹤here

我們使用AngularJS v1.3.0和Protractor v2.1.0。該網站是自動引導的;根元素是html標籤。路線提供者是否會導致此錯誤?該配置如下:

var myApp = angular.module('myApp', [ 'ngRoute' ]); 

myApp.config([ '$routeProvider', function($routeProvider) { 

    $routeProvider.when('/', { 
     templateUrl : 'app/tmpl/start.html' 
    }).when('/login', { 
     templateUrl : 'app/tmpl/login.html', 
     controller : 'LoginController' 
    }).when('/logout', { 
     templateUrl : 'app/tmpl/logout.html', 
     controller : 'LogoutController' 
    }); 
} ]); 

myApp.config([ '$httpProvider', function($httpProvider) { 
    $httpProvider.interceptors.push("myInterceptor"); 
} ]); 

myApp.run([ '$rootScope', function($rootScope) { 
    $rootScope.$apply(function() { 
     $rootScope.tokenString = "Bearer _"; 
    }); 
} ]); 

的index.html:

<!doctype html> 
<html ng-app="myApp"> 
<head> 
    <script src="lib/jquery/jquery-2.1.1.min.js"></script> 
    <script src="lib/bootstrap/js/bootstrap.js"></script> 
    <script src="lib/angular/angular.min.js"></script> 
    <script src="lib/angular/angular-route.min.js"></script>  

    <script src="app/app.js"></script> 
    <script src="app/controller/LoginController.js"></script> 
    <script src="app/controller/LogoutController.js"></script> 
    <script src="app/controller/NavbarController.js"></script> 
    <script src="app/services/AuthService.js"></script> 
    <script src="app/services/UserService.js"></script> 
    <script src="app/factories/Configurations.js"></script> 
    <script src="app/factories/myInterceptor.js"></script> 

    <link rel="stylesheet" href="lib/bootstrap/css/bootstrap.css"> 
</head> 
<body> 
    <nav class="navbar navbar-default" role="navigation" ng-controller="NavbarController as navbar"> 
     <div class="container-fluid"> 
      <div class="navbar-header"> 
       <button type="button" class="navbar-toggle collapsed" 
        data-toggle="collapse" data-target="#navbar-collapse-1"> 
        <span class="sr-only">Toggle navigation</span> <span 
         class="icon-bar"></span> <span class="icon-bar"></span> <span 
         class="icon-bar"></span> 
       </button> 
       <a class="navbar-brand" ng-href="navbar.root()">myApp</a> 
      </div> 
      <div class="collapse navbar-collapse" 
       id="navbar-collapse-1"> 
       <ul class="nav navbar-nav"> 
        <li><a ng-href="#/customers">Customers</a></li> 
        <li ng-show="!navbar.showLogout()"><a ng-href="#/login">Login</a></li> 
        <li ng-show="navbar.showLogout()"><a ng-href="#/logout">Logout</a></li> 
       </ul> 
      </div> 
     </div> 
    </nav> 
    <div class="container-fluid"> 
     <div class="row"> 
      <div class="col-lg-12"> 
       <div ng-view></div> 
      </div> 
     </div> 
    </div> 
</body> 
</html> 

的東西,我讀過的其他線程和已經嘗試過,但至今沒有工作:

  • 更改框架爲jasmine2
  • 使用browser.driver.get中的onPrepare函數
  • 使用browser.waitForAngularbeforeEach功能
  • 降級到量角器1.8
  • 添加allScriptsTimeoutconf.js


編輯:我剛剛發現了一個有趣的事情。我能夠與元素進行交互並執行多種場景。執行後,測試仍會失敗,並顯示btstrpd錯誤。

+0

當您從您的量角器配置中移除'rootElement'行時會發生什麼?另外,確保量角器更新到最新版本。大多數情況下,它可以自行找到根元素。 如果您發佈「index.html」文件的代碼,它也可能有所幫助。 –

+0

我在說明中添加了'index.html'。量角器是最新的。當我刪除'rootElement'配置時,問題保持不變。 – Kat

+0

@Kat你有沒有找到這個錯誤的解決方案? –

回答

0

下面解決了我的問題

我正在使用硒webdriver在Chrome瀏覽器上進行測試。我更新到最新的Chrome瀏覽器,我加入下文件夾中的最新chromedriver除了鉻

C的默認文件夾:\ Program Files文件\的NodeJS \ node_modules \量角器\ node_modules \ webdriver的經理\硒

我還在上面的文件夾中添加了chromedriver的zip文件。

我還將chromedriver添加到環境路徑變量中。

現在硒webdriver正在運行,我能夠成功地測試項目。

相關問題