Как использовать forEach с Cypress для циклического просмотра и сжатия текущего блока кода

#javascript #loops #foreach #automation #cypress

Вопрос:

итак, я новичок в cypress и хочу создать цикл с помощью forEach, но не знаю, как его применить. Я хочу сделать этот текущий кодовый блок СУХИМ. У кого-нибудь есть какие-нибудь советы о том, как бы я это сделал? Он должен повторяться каждый день недели и каждый раз меняться между «первым» и «последним». Я предоставил код, который пытаюсь сжать. Надеюсь, что этой информации достаточно — я впервые пишу здесь, так что буду очень признателен за любые советы!

 cy.get('#button').click();
  cy.get('#income-button').click();
  cy.contains('Starts on').click();
  cy.contains('First').click({force: true});
  cy.wait(50);
  cy.contains('Monday').click({force: true});
  cy.contains('Starts on').click({force: true});
  cy.contains('Last').click({force: true});
  cy.wait(50);
  cy.contains('Tuesday').click({force: true});
  cy.contains('Starts on').click({force: true});
  cy.contains('First').click({force: true});
  cy.wait(50);
  cy.contains('Wednesday').click({force: true});
  cy.contains('Starts on').click({force: true});
  cy.contains('Last').click({force: true});
  cy.wait(50);
  cy.contains('Thursday').click({force: true});
  cy.contains('Starts on').click();
  cy.contains('First').click({force: true});
  cy.wait(500);
  cy.contains('Friday').click({force: true});
  cy.contains('Starts on').click({force: true});
  cy.contains('Last').click({force: true});
  cy.wait(500);
  cy.contains('Saturday').click({force: true});
  cy.contains('Starts on').click({force: true});
  cy.contains('First').click({force: true});
  cy.wait(500);
  cy.contains('Sunday').click({force: true});
  cy.contains('Starts on').click({force: true});
  cy.contains('Last').click({force: true});
  cy.wait(500);
  cy.contains('Monday').click({force: true});
  cy.contains('Starts on').click();
  cy.contains('First').click({force: true});
  cy.wait(500);
  cy.contains('Tuesday').click({force: true});
  cy.contains('Starts on').click({force: true});
  cy.contains('Last').click({force: true});
  cy.wait(500);
  cy.contains('Wednesday').click({force: true});
  cy.contains('Starts on').click({force: true});
  cy.contains('First').click({force: true});
  cy.wait(500);
  cy.contains('Thursday').click({force: true});
  cy.contains('Starts on').click({force: true});
  cy.contains('Last').click({force: true});
  cy.wait(500);
  cy.contains('Friday').click({force: true});
  cy.contains('Starts on').click({force: true});
  cy.contains('First').click({force: true});
  cy.wait(500);
  cy.contains('Saturday').click({force: true});
  cy.contains('Starts on').click({force: true});
  cy.contains('Last').click({force: true});
  cy.wait(500);
  cy.contains('Sunday').click({force: true});
 

Ответ №1:

Вы можете создать массив строк, содержащих все дни, а затем добавить цикл For, что-то вроде этого:

 var days = [
  'Monday',
  'Tuesday',
  'Wednesday',
  'Thursday',
  'Friday',
  'Saturday',
  'Sunday',
]

for (var index in days) {
  cy.contains(days[index]).click({force: true})
  cy.contains('Starts on').click({force: true})
  cy.contains('Last').click({force: true})
  cy.wait(50)
}