2014-09-04 161 views
2

我正在使用量角器測試AngularJS應用程序。但是我在測試用ng-include插入的代碼時遇到了一些問題。AngularJS e2e使用量角器測試:不能測試插入ng-include的元素

當我嘗試找到插入了ng-include的元素時,出現錯誤「Error:No element found using locator:By.id」。

如果我在調試模式下運行量角器並在ng-include完成後檢查頁面,我在html中找到這個「< --ng-include - >」而不是它應該在那裏的元素。

我使用Karma做測試,但不能測試元素是否存在。然後我讀了一些文檔,它說量角器更適合這個,但它接縫我有同樣的問題。

app.js

$scope.setNewWindow = function() { 
     var elem = $compile('<div ng-controller="myCtrl" class="windows-frame" id="window' + windowID + '">' + 
          '<div ng-include src="\'includes/elemToInclude.html\'"></div>' + 
'</div>')($scope); 

$("#main").append(elem);} 

test.js

it('test', function() { 

    browser.executeScript("var scope = angular.element(document.querySelectorAll('#main')[0]).scope();" + 
     "scope.setNewWindow()"); 

    element(by.id('include_element_id')).click(); 
}); 

回答

0

你不應該使用browser.executeScript,它不是由量角器作出因此與角同步。

您寧願使用量角器內置方法來使元素可見.Do像用戶在您的網站上做的那樣,請點擊鏈接或按鈕。

順便說一句,你應該追加一個元素與jQuery就像那樣,做一個指令,以避免同步問題。

+0

我使用的是browser.executeScript,因爲我無法模擬調用$ scope.setNewWindow()的點擊,它與我正在使用的插件有關。但是,我有時間,我會嘗試將此更改爲指令。坦克。 – KatT 2014-10-07 10:59:40

相關問題