#async-await #protractor
#асинхронное ожидание #транспортир
Вопрос:
Я использую это в своем сквозном тестировании:
//Ignore fit for now, I'm trying to resolve single issue, and I have 30ish tests in the file
fit('Advanced search for ID should work', async function() {
await browser.navigate().refresh();
//Positioning on the right tab where serach works
await attachmentHomepage.clickBtnRighTab();
//Waiting for advanced search button to load on that tab
await browser.wait(EC.elementToBeClickable(attachmentHomepage.btnAdvancedSearchToggle), 3000, 'waiting for button to be clickable');
//Clicking it and opening hamburger like menu on the left side of the screen (which, if I click anywhere looses the focus)
await attachmentHomepage.clickBtnAdvancedSearchToggle();
await browser.wait(EC.elementToBeClickable(attachmentHomepage.inputAttachmentIDAdvancedSearch), 5000, 'waiting field to be clickable');
//Waiting for the field in the menu (Pseudo element) to become available
await attachmentHomepage.setAttachmentIDInAdvancedSearch('1333');
await browser.wait(EC.elementToBeClickable(attachmentHomepage.btnAdvancedSearchApply), 5000, 'waiting button to be clickable');
//--->>> Waiting for apply button that is in the same advanced search hamburger menu <<<----
await attachmentHomepage.clickBtnApply();
await browser.wait(EC.elementToBeClickable(attachmentHomepage.tblMainDataTable), 5000, 'waiting for main data table to be "clickable"');
await browser.sleep(1000);
expect(await attachmentHomepage.returnFirstResult()).toEqual('1333');
});
Моя проблема здесь в том, что это работает, но не каждый раз.
Время от времени у меня возникает ощущение, что браузер.дождаться btnAdvancedSearchApply просто не получится.
Каждый раз, когда я запускаю тест, он открывает гамбургер, он заполняет искомый идентификатор, а затем кажется, что он щелкает где-то на экране вместо ожидания кнопки, и меню гамбургера закрывается, и тест завершается неудачно.
Не уверен, как заставить его ждать каждый раз и 100% работает.
Предложения?
Комментарии:
1. Может быть, у вас есть анимация CSS, и кнопка не видна сразу? В этом случае я столкнулся с аналогичными ошибками
2. ваш код кажется правильным. Я бы запустил код в vscode с настройкой отладки построчно. Это дало бы представление о том, в какой момент каждая строка считается выполненной, и есть ли что-то еще на странице, чтобы подождать до перехода к следующей строке