Cypress перейти в последнее окно - PullRequest
0 голосов
/ 26 мая 2020

После нажатия кнопки мое приложение открывает новое окно. Мне нужно перейти в последнее окно. В настоящее время я использую этот подход (я добавил команду к командам Cypress. js файл), чтобы открыть URL-адрес в новом окне, но я не знаю, как изменить его, чтобы решить мою текущую проблему.

Cypress.Commands.add('openWindow', (url, features) => {
    const w = Cypress.config('viewportWidth')
    const h = Cypress.config('viewportHeight')
    if (!features) {
        features = `width=${w}, height=${h}`
    }
    console.log('openWindow %s "%s"', url, features)
    return new Promise(resolve => {
        if (window.top.aut) {
            console.log('window exists already')
            window.top.aut.close()
        }
        // https://developer.mozilla.org/en-US/docs/Web/API/Window/open
        window.top.aut = window.top.open(url, 'aut', features)

        // letting page enough time to load and set "document.domain = localhost"
        // so we can access it
        setTimeout(() => {
            cy.state('document', window.top.aut.document);
            cy.state('window', window.top.aut);
            resolve()
        }, 500)
    }) })

Есть ли обходной путь для переключения между windows в Cypress?

1 Ответ

1 голос
/ 01 июля 2020

Я только что отправил запрос на перенос в репозиторий cypress-open-child-window Github, который добавляет 2 дополнительные команды, помогающие решить эту проблему. switchWindow() и closeWindow()

См .: https://github.com/bahmutov/cypress-open-child-window/pull/4/commits/fed977edb03b8b67f934b33617867572dec0e994

На случай, если он будет удален, вот моя разветвленная ветвь: https://github.com/jakedowns/cypress-open-child-window/tree/add-switchWindow-and-closeWindow

Суть этого раскрыта здесь, в этом Gist: https://gist.github.com/jakedowns/32b75add88736fcd99c7202a98354384

UPDATE вот некоторые дополнительные помощники, которые я использую: https://github.com/jakedowns/CypressHelpers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...