#javascript #automation #mocha.js #cypress
#javascript #автоматизация #mocha.js #cypress
Вопрос:
Он отлично работает для того же события щелчка, если я закодировал в одном блоке «это», как показано ниже.
Рабочий код:
describe('Test Suite', () => {
it('Test case 1', () => {
//Test 1
//Test 2
})
})
Не работает:
describe('Test Suite', () => {
it('Test case 1', () => {
//Test 1
})
it('Test case 2', () => {
//Test 2
})
})
Ниже приведен мой фрагмент кода, первый блок «это» работает нормально после выполнения метода входа в систему. Затем, во-вторых, блокируется просто щелчок по нужному элементу, но страница никогда не загружается.
PS Если я написал код в одном блоке «это», страница загружается и работает нормально.
describe('Fund Manager Suite', () => {
//Checking Fund Manager page loading
before(() => {
cy.visit('xxxxxxxxxxxxx')
cy.login('xxxxx', 'xxxxx')
})
it('fund manager navigation works', () => {
cy.location('pathname').should('equal', '/xxxxx')
cy.get('#appSwitcher').click()
cy.get('#appSwitcher > .dropdown > .dropdown-menu > :nth-child(2) > a').click()
cy.location('pathname').should('equal', '/xxxxx')
cy.get('.k-grid-table').find('tr').should('have.length', 5)
})
it('fund detail works', () => {
cy.get('.product > :nth-child(2)').click()
cy.location('pathname').should('equal', '/xxxxx')
// Fund Detail - Search
cy.get('#s2id_autogen31').type('Rach')
cy.get('#select2-result-label-32').click()
cy.get('#searchSubmit').click()
cy.get('#DataTables_Table_0').find('tr').should('have.length', 10)
})
})
Комментарии:
1. У вас есть
before()
илиbeforeEach()
блок.2. @AlapanDas У меня перед (() =>{ . Поскольку я хочу оставаться в системе и не нужно повторно запускать сценарий входа в систему в моем втором тесте.
3. @AlapanDas пробовал с Cypress. Cookies.preserveOnce(‘session_id’, ‘remember_token’) по-прежнему не загружает страницу. Если я закодировал то же самое с 1 блоком «это», он работает нормально.
4. Пожалуйста, добавьте часть кода для теста в следующий раз — ваш вопрос похож на пустую форму. Если она содержит какие-то личные данные — приложите усилия для редактирования данных, чтобы люди могли вам помочь
5. @RosenMihaylov Я обновил свой фрагмент кода выше. Пожалуйста, проверьте это.
Ответ №1:
Вы должны сохранить свои файлы cookie, beforeEach()
чтобы убедиться, что вы остаетесь в системе, во всех it()
блоках. Вы можете прочитать больше в cypress docs .
describe('Dashboard', () => {
before(() => {
// log in only once before any of the tests run.
// your app will likely set some sort of session cookie.
// you'll need to know the name of the cookie(s), which you can find
// in your Resources -> Cookies panel in the Chrome Dev Tools.
cy.login()
})
beforeEach(() => {
// before each test, we can automatically preserve the
// 'session_id' and 'remember_token' cookies. this means they
// will not be cleared before the NEXT test starts.
//
// the name of your cookies will likely be different
// this is an example
Cypress.Cookies.preserveOnce('session_id', 'remember_token')
})
it('displays stats', () => {
// ...
})
it('can do something', () => {
// ...
})
it('opens a modal', () => {
// ...
})
})
Комментарии:
1. Пробовал с помощью описанных выше шагов. Все та же ошибка. Истекло время ожидания 60000мс для загрузки удаленной страницы. Ваша страница не запустила событие загрузки в течение 60000ms.
2. Вы заменили
session_id
иtoken
фактическими значениями? Вы можете обратиться к этой статье для получения дополнительной информации о том, как получить файлы cookie для вашего приложения — thereluctanttester.com/2018/02/24 /…3. Я пытаюсь передать токен в это. Но токен динамически изменяется через определенный промежуток времени. Обработает это и сообщит вам. Спасибо за ваше предложение.
Ответ №2:
Я видел такое поведение, когда первый it case
запуск и не завершает какой-либо запрос xhr на сайте — и в результате cypress продолжает процесс во время запуска второго ит-обращения. Лучшее решение для чистого листа для каждого случая, который я нашел, — это разделить каждый случай в другом файле
Ответ №3:
Обновить:
Удалось решить эту проблему, сохранив идентификатор сеанса.
Cypress.Cookies.defaults({
preserve: "session_id"
})