我有这个测试代码:
element(by.cssContainingText('a[ng-click="select()"]', 'Visual')).click()
browser.sleep(1000)
expect(element.all(by.tagName('angular-chart')).count()).toEqual(1);
但它会挂起,直到达到超时,然后显示:
错误:超时 - 在
jasmine.DEFAULT_TIMEOUT_INTERVAL
指定的超时时间内未调用异步回调。
我想我需要等待内容以某种方式加载然后运行测试?
如果我将expect构造替换为下面的构造,则传递:
expect(true).toEqual(true)
答案 0 :(得分:0)
试试这个:
element(by.cssContainingText('a[ng-click="select()"]', 'Visual')).click().then( function(){
expect(element.all(by.tagName('angular-chart')).count()).toEqual(1);
});
量角器中的大多数调用都会返回一个承诺。 http://www.protractortest.org/#/api?view=webdriver.WebElement.prototype.click
答案 1 :(得分:0)
让我们尝试添加明确的等待以等待angular-chart
元素to become present:
var EC = protractor.ExpectedConditions;
element(by.cssContainingText('a[ng-click="select()"]', 'Visual')).click()
var chart = element(by.tagName('angular-chart'));
browser.wait(EC.presenceOf(chart), 10000);
您还可以考虑增加jasmine timeout intervals。