2015-12-17 2 views
1

У меня есть тестовый код:Как запустить тест трактора после завершения загрузки кликов и содержимого?

element(by.cssContainingText('a[ng-click="select()"]', 'Visual')).click() 
browser.sleep(1000) 
expect(element.all(by.tagName('angular-chart')).count()).toEqual(1); 

Но висит до таймаута досягаемости, а затем показывает:

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL .

Я полагаю, что нужно ждать, пока содержание, чтобы загрузить как-то запустить тест?

Если я заменить ожидать конструкции с приведенной ниже, она проходит:

expect(true).toEqual(true) 

ответ

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

+0

Я пробовал этот и другие варианты, но они не помогли. Похоже, что есть некоторая неправильная логика в частичном использовании шаблона, который предотвращает правильную работу кода. –

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.

Смежные вопросы