Долго не хотел писать лишний раз сюда, но после почти 1 дня проб, далее не могу столько времени терять, все таки напишу.
Не смог понять в чем ошибка/проблема, казалось бы элементарная до безумия ситуация, но прошу вашей помощи ASAP
Вот скриншот части страницы, где поле Full address, куда я ввел слово Chicago и появляеться suggestive search c варинтами (простоя казалось бы вещь)
Ну а далее, просто не могу дождаться элемент и кликнуть любой ul > li
it('first Sign Up', async function () {
await email.sendKeys(chance.email());
await passField.sendKeys('');
await passConfField.sendKeys('');
//await prefix.click();
//await browser.sleep(1000);
//await mr.click();
await firstName.sendKeys('Protractor');
await lastName.sendKeys('AutoTest');
await company.sendKeys('QA');
await fullAddress.sendKeys('Chicago');
await browser.sleep(1000);
const dropDown = $('.menu')); // даже не видит сам drop down list
const waitDropDown = EC.visibilityOf(dropDown);
await browser.wait(waitDropDown, 1000);
const suggestiveSearch = $('ul.menu > li:first-child'); // li:first-of-type по разному уже локаторы пробывали, я уже думал, что я не правильно локатор выстроил, но несколько человек выставляли по разному как только возможно, все равно, потому думаю, что делаю что не так в целом
await suggestiveSearch.click();
await address1.sendKeys('Chicago Address 1 90000');
await address2.sendKeys('This is second test address, Chicago');
await zip.sendKeys('12345');
await phone.sendKeys('1234567890');
await browser.wait(isClickable, 2000);
await buttonSignUp.click();
});
А Ваши функции sendKeys() в обьектах email, passField… возвращают промисы? Если нет то посути оператор await не работает и весь код выполняется ассинхронно, соответственно элементы не успевают появлятся в DOM модели.
Спасибо за отзыв.
Возвращает. Как эксперемент я уже обавил слипы, что бы посмотреть, но все равно
Failed: Timed out waiting for asynchronous Angular tasks to finish after 11 seconds. This may be because the current page is not an Angular application. Please see the FAQ for more details: protractor/timeouts.md at master · angular/protractor · GitHub
While waiting for element with locator - Locator: By(css selector, [e2e=“dropdown”])
While waiting for element with locator - Locator: By(css selector, [e2e=“dropdown”])
Я уже наш фронт енд весь пересмыкал, но так и не смогли даже просто локализовать этот дропдавн
Как предположение, может дело во второй скобке в этой строке:
const dropDown = $(’.menu’));
По сути это не правильный синтаксис для JS
Должно быть так - const dropDown = $(’.menu’);
Это когда начинаешь печатать? Потенциально может быть что Ангуляр постоянно крутит что-то в фоне когда появляется этот список подсказок, и не возвращает протрактору сообщение что приложение готово к взаимодействию. Потому прострактор ждет ждет что приложение готово - а оно нет, и падает по таймауту -
AngularJS
If your AngularJS application continuously polls $timeout or $http, Protractor will wait indefinitely and time out. You should use the $interval for anything that polls continuously (introduced in Angular 1.2rc3).