Функция часов Cypress делает тело HTML невидимым

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

Когда я звоню:

cy.visit('/path/to/page');
cy.get('#elementId').click();

Все в порядке.

Однако, когда я это делаю:

cy.clock(Date.now());
cy.visit('/path/to/page');
cy.get('#elementId').click();

Я получаю следующую ошибку:

This element `<button with Id i want to click>` is not visible 
because its parent `<body>` has CSS property: `display: none`

Это также происходит, когда я не передаю аргументы cy.clock(). Почему cy.clock() делает тело этой страницы невидимым? И как мне этого избежать?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
31
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Как насчет того, чтобы вы предоставили настраиваемый выход, чтобы сначала элемент был виден, а затем click().

cy.get('#elementId', {timeout: 6000}).should('be.visible').click()

Или вы также можете использовать {force: true}, если хотите щелкнуть скрытый элемент.

cy.get('#elementId', {timeout: 6000}).should('be.visible').click({force: true})
Ответ принят как подходящий

Команда cy.clock() перезаписывает и замораживает функции javascript, относящиеся к таймерам — setTimeout, setInterval, а также объекты Date.

Похоже, ваше приложение использует setTimeout во время загрузки, и некоторый первоначальный javascript не завершен.

Попробуйте добавить cy.tick() к последовательности команд

cy.clock(Date.now());
cy.visit('/path/to/page');
cy.tick(1000);                 // try longer and shorter timings
cy.get('#elementId').click()

Другие вопросы по теме