В моем тесте Cypress я пытаюсь перехватить запрос при входе в систему.
Значение пароля, которое я передаю в запрос, равно 9K%bZKR8
.
Я заметил, что когда я нажимаю кнопку входа в систему, выполняются 2 запроса POST:
1-й запрос содержит правильный пароль 9K%bZKR8
,
Я пытался прослушать это, но тест истекает, говоря No request ever occurred.
.
Я даже пытался жестко закодировать URL-адрес, как показано ниже, но я продолжаю получать указанную выше ошибку:
cy.intercept('POST', `**/Users/Login?username=****&password=9K%bZKR8`).as('LoginRequest')
2-й запрос почему-то содержит другое значение пароля — 9K%25bZKR8
. Я не уверен, откуда берется 25
.
Я также жестко закодировал URL-адрес здесь, и он каким-то образом подбирается:
cy.intercept('POST', `**/Users/Login?username=****&password=9K%25bZKR8`).as('LoginRequest')
Я мог бы использовать 2-й запрос и подтвердить этот ответ, но я бы подумал, что лучше использовать 1-й запрос, поскольку он содержит правильный пароль.
Может кто-нибудь, пожалуйста, скажите мне, почему происходят 2 запроса и как я могу утверждать 1-й?
Моя теория заключается в том, что %25
в 9K%25bZKR8
является escape-кодом URL для буквального символа %
в введенной строке.
См. Функции кодирования URL — введите %
, и он вернет %25
.
Чтобы перехватить, я бы сократил URL-адрес и использовал javascript внутри обратного вызова, чтобы он соответствовал разделу строки запроса (т.е. &password=9K%bZKR8
)
cy.intercept('POST', '**/Users/Login', (req) => { // anything going to Login
if (req.query.password === '9K%bZKR8') {
req.continue(res => {
console.info(res) // check the response
})
if (req.query.password === '9K%25bZKR8') {
req.continue(res => {
console.info(res) // check the response
})
}
})
Можете ли вы показать свой полный код для вашего перехвата, действия для запуска запроса и ожидания?