Обработка всплывающего окна подтверждения Windows с помощью Cypress - PullRequest
0 голосов
/ 05 мая 2020

Я усердно изучаю Cypress: в устаревшем приложении с фреймами: (

Я читал, что Cypress автоматически принимает предупреждения, но здесь у меня есть всплывающее окно подтверждения, которое требует ввода данных пользователем. Однако я Я изо всех сил пытаюсь закрыть это windows Подтвердите pop ip с запросом «Отмена» или «ОК».

Элемент, который запускает всплывающее окно, находится внутри кадра (не iFrame) выглядит следующим образом:

<a href="/tasksgui/manageScheduledJobs.do?userAction=runnow&amp;userAction=select&amp;selectedIndex=1&amp;formContextKey=ListChunk[SchedulerJobsSearchResults]{1588676256461}1" 
onclick="return(confirmRunNow())" ;>
RunJobs</a>

Я знаю, что Cypress API предоставляет способ справиться с этим:

cy.on('window:confirm', (str) => {
    //code here
}

Но я не понимаю, как включить это в мой тестовый блок "

it('gets the post', (done) => {
cy.visit('http://myapp.co.uk/mygui/index.jsp');
getLeftFrameBody().findByText('Manage Tasks').click();
cy.wait(2000)
getContentFrameBody().should('include.text', 'Scheduled Tasks')

getContentFrameBody().findByText('Task Name');
getContentFrameBody().find('input[name="jobName"]').type('Task one');
getContentFrameBody().findByText('Search').click();
cy.wait(2000)
cy.on('window:confirm', function(confirmText){
  return true
});

getContentFrameBody().find('.resultrowone').find('a').eq(5).click();
})

1 Ответ

0 голосов
/ 05 мая 2020

Сделав функцию asyn c, вы можете дождаться подтверждения окна, а затем продолжить, как показано в примере ниже.

it('gets the post', async (done) => {
  cy.visit('http://companyapp.co.uk/mygui/index.jsp');
  getLeftFrameBody().findByText('Manage Tasks').click();
  cy.wait(2000)
  getContentFrameBody().should('include.text', 'Scheduled Tasks')

  getContentFrameBody().findByText('Job Name');
  getContentFrameBody().find('input[name="jobName"]').type('runTasks');
  getContentFrameBody().findByText('Search').click();
  cy.wait(2000);

  await new Promise(resolve => {
    cy.on('window:confirm', (str) => {
      resolve();
    });

    getContentFrameBody().find('.resultrowone').find('a').eq(5).click();
  });

  // Continue after window was confirmed
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...