Я новичок в Протрактор и AngularJS. Я использую Parse на заднем конце. Попытка провести очень простой тест:Транспортир, AngularJS, Parse - Транспортир не дожидается Угловой, чтобы решить
describe('Test', function() {
beforeEach(function() {
browser.get('index.html#/example')
});
it('should have a button', function() {
expect(element(by.css('#test321')).isElementPresent()).toBe(true); //fails
}); ...
Тест не проходит. Элемент находится в файле template.html:
...
<body>
<button id="test321">stuff</button>
...
Он загружен угловым маршрутом. Этот маршрут также загружает данные с заднего конца:
...
config(['$routeProvider', function ($routeProvider) {
$routeProvider.
when('/example', {
templateUrl: 'template.html',
controller: 'templateCtrl',
resolve: {
data: 'dataService' //Data is loaded from Parse. This line causes the problem
}...
Проблема связана с линией «данные:» выше. Если я выберу эту строку или верну ее статический результат, она будет работать нормально. Также, если я перемещаю этот элемент index.html, он также работает.
Это похоже на вопрос времени. Однако в соответствии с документацией транспортир (или конкретно isElementPresent) ждет всех разрешений перед размещением элементов.
Я топнул. Большое спасибо за любую помощь.
Обновление: Согласно this было решено, в Protractor 1.2, но я на 1.4. Очень странно.
до сих пор единственным временным решением я нашел (вдохновленный aricearice), чтобы вставить явное ожидание. Вот один из способов, который, кажется, работает:. 'browser.wait (функция() { возврата $ ('# addReferringButton'), то (функция (элемент) { возвращающие; }, функция (ошибка) { возврат false; }); }, 5000); ' –