Как дождаться полной загрузки страницы - PullRequest
0 голосов
/ 10 июля 2019

Я использую Cypress, чтобы проверить мой спа.Иногда страница отображается быстро, а иногда очень медленно.Мне нужно иметь возможность проверить наличие кнопки или текста, который будет отображаться после загрузки страницы, но я не хочу ждать вечность.

Я использовал слишком длинные периоды ожидания, но хотел бы проверитьработать быстрее.

let targeturl = 'http:\\something.com'
let longwait = 2500

describe('Update Case', () => {
  it('Create Case', () => {   
    cy.visit(targeturl)
    cy.wait(longwait)
    cy.get('button').contains('Create').click()

Я хочу установить ожидание, пока не появится кнопка «Создать».

Ответы [ 2 ]

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

Я думаю, вы можете использовать timeout вариант visit:

cy.visit(targeturl, { timeout: 30000 })

Я помню, у меня была похожая проблема в прошлом, эта проблема Github дала мне некоторую полезную информацию тогда.

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

По умолчанию Cypress будет ждать, пока ваша страница загрузит все ресурсы, прежде чем продолжить тестирование. Ваш cy.wait() не должен быть необходим. Время ожидания по умолчанию для cy.visit() составляет 60 секунд.

Кроме того, cy.get() будет повторять попытку поиска вашего элемента, пока элемент не существует. Время ожидания по умолчанию составляет 4 секунды, но вы можете увеличить его.

Как правило, это все, что вам нужно:

describe('Update Case', () => {
  it('Create Case', () => {   
    cy.visit(targeturl)
    cy.get('button').contains('Create').click()

Если вы обнаружите, что это не работает, возможно, из-за того, что страница загружается более 4 секунд после загрузки всех ресурсов, вы можете сделать что-то вроде этого:

describe('Update Case', () => {
  it('Create Case', () => {   
    cy.visit(targeturl)
    // wait up to 30 seconds for some element to exist before continuing the test
    cy.get('.some-element-in-your-app-that-only-exists-once-page-has-loaded', { timeout: 30000 })
    cy.get('button').contains('Create').click()

Как правило, вам не нужно использовать cy.wait() для задержки ваших тестов на определенное количество миллисекунд. Это почти всегда плохая практика.

...