Как использовать транспортир и браузер.ждать, чтобы каждый раз давать одинаковые результаты?

#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 с настройкой отладки построчно. Это дало бы представление о том, в какой момент каждая строка считается выполненной, и есть ли что-то еще на странице, чтобы подождать до перехода к следующей строке