Доступ к протоколу chrome devtools в docker grid
Мои тесты работают с сеткой докеров с образами докеров селена для концентратора и хрома. Что я пытаюсь сделать, так это получить доступ к протоколам chrome devtools в узле chrome, чтобы я мог получить доступ / перехватить запрос. Любая помощь приветствуется
Я смог заставить его работать без докера в моем локальном. Но не смог придумать способ подключить devtools в chrome node docker grid. Ниже мой docker-compose и код
докер сочинять
version: "3.7"
services:
selenium_hub_ix:
container_name: selenium_hub_ix
image: selenium/hub:latest
environment:
SE_OPTS: "-port 4445"
ports:
- 4445:4445
chrome_ix:
image: selenium/node-chrome-debug:latest
container_name: chrome_node_ix
depends_on:
- selenium_hub_ix
ports:
- 5905:5900
- 5903:5555
- 9222:9222
environment:
- no_proxy=localhost
- HUB_PORT_4444_TCP_ADDR=selenium_hub_ix
- HUB_PORT_4444_TCP_PORT=4445
- NODE_MAX_INSTANCES=5
- NODE_MAX_SESSION=5
- TZ=America/Chicago
volumes:
- /dev/shm:/dev/shm
Вот пример кода, как я заставил его работать локально без сетки (драйвер Chrome на моем Mac)
const CDP = require('chrome-remote-interface');
let webDriver = require("selenium-webdriver");
module.exports = {
async openBrowser() {
this.driver = await new webDriver.Builder().forBrowser("chrome").build();
let session = await this.driver.session_
let debuggerAddress = await session.caps_.map_.get("goog:chromeOptions").debuggerAddress;
let AddressString = debuggerAddress.split(":");
console.log(AddressString)
try {
const protocol = await CDP({
port: AddressString[1]
});
} catch (err) {
console.log(err.message)
const {
Network,
Fetch
} = protocol;
await Fetch.enable({
patterns: [{
urlPattern: "*",
}]
});
}
await Fetch.requestPaused(async ({
interceptionId,
request
}) => {
console.log(request)
})
}
return this.driver;
},
}
Когда это сетка, я просто меняю способ сборки драйвера на ниже
this.driver = await new webDriver.Builder().usingServer(process.env.SELENIUM_HUB_IP).withCapabilities(webDriver.Capabilities.chrome()).build();
При этом я получаю номер порта, но не могу создать сеанс CDP и получаю сообщение об ошибке в соединении.