Транспортир: проверьте наличие элемента во время загрузки

Я использую транспортир для автоматизации приложения AngularJS. Есть сценарии, в которых мне нужно загрузить изображение с помощью кнопки обзора и проверить наличие индикатора выполнения во время загрузки.

Я использую следующий код для достижения того же самого:

element(locator).sendKeys(pathOfTheImage);
expect(element(locatorOfProgressBar).isPresent()).toBeTruthy();

Проблема здесь в том, что хотя индикатор выполнения присутствует, утверждение всегда терпит неудачу, потому что команда element(locator).sendKeys(pathOfTheImage); все еще выполняется и ничего не вернуло для продолжения следующей команды, которая является точкой утверждения.

Я безуспешно пытался отключить синхронизацию:

browser.ignoreSynchronization = true;

Любое решение этой проблемы? Как я могу перейти к следующим командам, не дожидаясь успешного выполнения команды sendKeys?


person Abhishek Swain    schedule 14.05.2015    source источник


Ответы (1)


У меня была аналогичная проблема с отловом промежуточной анимации прогресса.

Вы должны установить browser.ignoreSynchronization в true (это помогает не ждать, пока angular успокоится) и использовать browser.wait() для явного ожидания анимации стать видимым:

element(locator).sendKeys(pathOfTheImage);
browser.ignoreSynchronization = true;

var EC = protractor.ExpectedConditions;
browser.wait(EC.visibilityOf(locatorOfProgressBar), 5000, "No progress animation is visible");

И не забудьте вернуть ignoreSynchronization обратно к false после.

person alecxe    schedule 14.05.2015
comment
В моем случае locatorOfProgressBar все еще не находится, пока идет загрузка. Я использовал предложенную вами технику. - person Abhishek Swain; 15.05.2015
comment
@Mfsi.AbhishekSwain, спасибо за обновление, есть ли способ воспроизвести вашу проблему? (если сайт общедоступный) - person alecxe; 15.05.2015