Загрузка веб-сайта с таймаутом, get() не получает и нажимает() кнопку

#javascript #testing #cypress

Вопрос:

Я должен нажать кнопку, выбрать другую валюту, а затем проверить 24-часовой обменный курс и посмотреть, положительный ли он. Я очень новичок в cypress и пытаюсь учиться. Я прочитал документы cypress, но не смог найти руководство.

До сих пор это мой код.

 describe('dropdown select', () => {  it('open dropdown', () => {  cy.visit('https://spectrocoin.com/en/bitcoin-price-rates.html')  cy.get('[class=" css-2b097c-container"]', { timeout: 20000 })  cy.get('button').contains('USD').click()  }) })  

Я добавил тайм-аут в 20 секунд, потому что казалось, что страница не загружается до нахождения элемента. Но при выделении в среде Cypress он показывает совершенно другой элемент, чем среда элементов проверки Chrome.

В чем может быть проблема, если он не найдет правильную кнопку, а затем выберет, скажем, валюту EUR в раскрывающемся списке.

Скриншот Chrome

Скриншот Текущего Состояния

Ответ №1:

Вы можете сделать что-то вроде этого:

 describe('dropdown select', () => {  it('open dropdown', () => {  cy.visit('https://spectrocoin.com/en/bitcoin-price-rates.html')  Cypress.on('uncaught:exception', (err, runnable) => {  return false  }) //Ignore exceptions  cy.get('[data-cy=accept-btn]').click()  cy.get('#currency-select').should('be.visible').click()  }) })  

Вместо класса вы можете использовать селектор идентификатора #currency-select , и это работает.

Скриншот Тестового бегуна: выполнение тестового запуска

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

 Cypress.on('uncaught:exception', (err, runnable) => {  return false })  

Комментарии:

1. Похоже, в строке, которая должна нажать кнопку «Принять», отображается ошибка. cy.get('[data-cy=accept-btn]').click() . Может ли это быть связано с тем, что веб-сайт недостаточно быстро загружается и находит его?

2. В чем заключается ошибка, которую вы получаете ?

3. «0 совпадающих элементов»

4. Я запустил точный код локально, и он работает на меня. Я добавил скриншот, на котором вы можете видеть, как открывается выпадающий список валюты. Также я видел, что веб-страница выдавала исключения, которые вы должны добавить Cypress.on('uncaught:exception', (err, runnable) => {return false})

5. Добавление исключения сработало. Теперь он успешно щелкает по раскрывающемуся списку. Я продолжу работать над тем, как выбрать валюту, а затем 24-часовые курсы. Спасибо.