Nightwatch - Как подписаться на события CDP?
Как вы, возможно, уже знаете, Nightwatch 2 теперь включает в себя методы для совершения вызовов по протоколу CDP.
Итак, я пытаюсь захватить сетевые ответы. Я знаю, что цель «Сеть» должна быть включена, а также мы должны подписаться на обратный вызов для
Network.responseReceived
мероприятие. Я уже сделал это в другом инструменте фреймворка, но не могу найти в документации Nightwatch ни одного связанного примера, в котором используются события CDP.
На данный момент я не знаю, какой метод разрешает эту подписку или где она находится, находится ли она в
browser.driver
или в
cdpConnection
объекты?
Это код, который я сейчас пытаюсь:
module.exports = {
'@tags': ['njs2-03'],
async myTest (browser) {
await browser.driver.sendAndGetDevToolsCommand('Network.enable')
const cdpConnection = await browser.driver.createCDPConnection('page');
cdpConnection._wsConnection.on('Network.responseReceived', entry => {
console.log('ENTRY >>', entry)
})
await browser.url('https://duckduckgo.com/')
}
}
Любое предложение будет действительно полезно, спасибо!
1 ответ
Я сам искал ответ на аналогичную проблему. Оказывается, иногда гораздо лучше анализировать исходный код Nightwatch напрямую. Особенно после выхода второй версии.
Анализ команд CDP, например. вmockNetworkResponse
метод в коде Nightwatch вmethod-mappings.js
файл дайте ответы. https://github.com/nightwatchjs/nightwatch/blob/098306cf77d4e380b69ab836231947fe94a12ca0/lib/transport/selenium-webdriver/method-mappings.js
Имейте в виду, что вы используете непосредственно_wsConnection
объект. Следовательно, этоmessage
событие, которое вы ищете. https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/message_event
Таким образом, попробуйте следующее
async myTest (browser) {
await browser.driver.sendAndGetDevToolsCommand('Network.enable')
const cdpConnection = await browser.driver.createCDPConnection('page')
cdpConnection._wsConnection.on('message', message => {
const messageParsed = JSON.parse(message)
if (messageParsed.method === 'Network.responseReceived') {
console.log('DEVTOOLS EVENT PARAMS >>', messageParsed.['params'])
}
})
await browser.url('https://duckduckgo.com/')
}