Автоматизировать проверку результатов на основе автоматического нажатия кнопки - PullRequest
0 голосов
/ 03 июля 2019

На веб-странице есть кнопка. Если я нажимаю эту кнопку в первый раз, для получения статуса требуется некоторое время. когда он будет запущен, то если я нажму через какое-то время, скажем, 3 минуты, то статус станет успешным.

Проблема здесь в том, что мне приходится давать время ожидания между двумя щелчками для проверки состояния, а иногда из-за этого времени ожидания состояние не синхронизировано. Например, я нажимаю кнопку и статус в процессе выполнения, и если я нажимаю через 3 минуты, иногда статус успешен, а иногда остается в процессе, что не соответствует моему TC.

нет никакого способа, чтобы эту кнопку нужно было нажимать автоматически до тех пор, пока статус не появится, и тогда я смогу проверить статус. то же самое для успешного статуса.

Я использую сон между двумя щелчками

    browser.sleep(25000) 

    button.click();
    expect(inprogress_class.getText()).toContain('in progress');

    browser.sleep(100000) // waiting for a defined time to click a buttonassuming that status will be successful

    button.click();
    expect(successful_class.getText()).toContain('successful);

Ожидается: кнопка продолжает нажиматься до изменения статуса

Факт: указание времени ожидания между кликом и ожиданием изменения состояния

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Если вы можете использовать async / await, то будет проще, в противном случае вам придется использовать цепочку Promises.

попробуйте с асинхронным / ожидающим подходом:

await browser.wait(async () => {
        await button.click();
        var buttonText = await inprogress_class.getText();
        return buttonText === 'in progress';
       }, 180000); 
expect(inprogress_class.getText()).toContain('in progress');

await browser.wait(async () => {
        await button.click();
        var buttonText = await successful_class.getText();
        return buttonText === 'successful';
       }, 180000); 
expect(successful_class.getText()).toContain('successful);    
0 голосов
/ 03 июля 2019

Попробуйте параметр ниже

Для первого щелчка и дождитесь InProgress Состояние

await button.click();
await browser.wait(ExpectedConditions.textToBePresentInElement(await inprogress_class), 25000, 'The wait for inProgress state');

Чтобы нажать кнопку до тех пор, пока мы не добьемся успеха, попробуйте следующий

 while (await successful_class.getText() !== 'successful') {
  await button.click();
  await browser.sleep(10000); // update the time with how often the button needs to be clicked
 }
 expect(await successful_class.getText()).toContain('successful);

Надеюсь, это поможет вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...