Проблемы с доступом к порту удаленной отладки Chrome 9223 с помощью Selenium WebDriver в безголовом режиме.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с доступом к порту удаленной отладки Chrome 9223 с помощью Selenium WebDriver в безголовом режиме.

Сообщение Anonymous »

Я пытаюсь настроить Selenium WebDriver с Chrome в автономном режиме и включенной удаленной отладкой. Я использую следующий код для запуска Chrome и настройки WebDriver:

Код: Выделить всё

const { Builder, By, until, Capabilities } = require("selenium-webdriver");
const cheerio = require("cheerio");
const ps = require("ps-node");
const { exec, spawn } = require("child_process");
const fs = require("fs");
const net = require("net");
const fetch = require("node-fetch");

async checkAndKillExistingChrome(port) {
return new Promise((resolve, reject) => {
ps.lookup(
{ command: "chrome", arguments: `--remote-debugging-port=${port}` },
(err, resultList) => {
if (err) {
return reject(err);
}

const chromeProcess = resultList[0];
if (chromeProcess) {
console.log(
`Killing existing Chrome process with PID: ${chromeProcess.pid}`
);
ps.kill(chromeProcess.pid, (err) => {
if (err) {
return reject(err);
}
console.log("Existing Chrome process terminated.");
resolve();
});
} else {
resolve();
}
}
);
});
}

async startChrome() {
return new Promise(async (resolve, reject) => {
const port = 9223;
await this.checkAndKillExistingChrome(port);

console.log(
"Starting Chrome with remote debugging enabled and in headless mode..."
);
exec(
`"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" --remote-debugging-port=${port} --user-data-dir=C:\\selenium\\ChromeProfile2 --headless --disable-gpu --no-sandbox --enable-logging --v=1 --log-file=C:\\path\\to\\chrome.log`,
(error, stdout, stderr) => {
if (error) {
console.error(`Error starting Chrome: ${error}`);
reject(error);
return;
}
console.log(`Chrome stdout: ${stdout}`);
console.error(`Chrome stderr: ${stderr}`);
}
);

setTimeout(async () => {
try {
const response = await fetch(`http://127.0.0.1:${port}/json`);
if (response.ok) {
const jsonResponse = await response.json();
if (jsonResponse.length > 0) {
console.log(`Chrome is running and listening on port ${port}.`);
resolve();
} else {
console.error(
`Chrome is running on port ${port} but no pages are available.`
);
reject(
new Error(
`Chrome is running on port ${port} but no pages are available.`
)
);
}
} else {
console.error(`Chrome is not listening on port ${port}.`);
reject(new Error(`Chrome is not listening on port ${port}.`));
}
} catch (err) {
console.error(
"Failed to connect to Chrome remote debugging port:",
err
);
reject(err);
}
}, 15000);
});
}

async setupDriver() {
try {
console.log("Setting up the driver...");
const chromeCapabilities = Capabilities.chrome();
chromeCapabilities.set("goog:chromeOptions", {
debuggerAddress: "127.0.0.1:9223", // Use 127.0.0.1 explicitly
});

this.driver = await new Builder()
.withCapabilities(chromeCapabilities)
.build();

console.log("Driver setup complete.");
} catch (err) {
console.error("Error setting up driver:", err);
}
}
Ошибка:-

Код: Выделить всё

Error setting up driver: SessionNotCreatedError: session not created: cannot connect to chrome at 127.0.0.1:9223
from unknown error: unable to discover open pages
Экземпляр Chrome, похоже, работает нормально и прослушивает порт 9223, что подтверждается netstat. Однако когда я пытаюсь получить отладочную информацию с помощью Curl http://127.0.0.1:9223/json, я получаю пустой ответ.
Я попробовал увеличить время ожидания, проверив журналы Chrome и проверка команды, используемой для запуска Chrome, но я все еще не могу получить доступ к информации об отладке. Могу ли я предпринять какие-либо другие действия для устранения этой проблемы?
Будем очень признательны за любую помощь или рекомендации. Спасибо!
Я попробовал запустить Chrome с включенной удаленной отладкой и в автономном режиме, используя определенный порт (9223), а затем получить доступ к информации об отладке с помощью curl http://127.0.0.1:9223. /json.
Я ожидал получить ответ JSON, содержащий отладочную информацию (например, список целей отладки). Однако вместо этого я получил пустой ответ.
Я также проверил журналы Chrome и убедился, что Chrome работает и прослушивает порт 9223 с помощью netstat.
Какие еще шаги я могу предпринять, чтобы устранить эту проблему и успешно получить доступ к отладочной информации?


Подробнее здесь: https://stackoverflow.com/questions/786 ... bdriver-in
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»