2014-09-04 157 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

相关问题