Эта ошибка не возникает, когда код выполняется, но это происходит случайным образом. JavaScript в «верхнем» контексте сайта, чтобы все запросы были заблокированы, чтобы остановить генерацию новых файлов cookie или других данных. ЦЕЛЬ.
Код: Выделить всё
driver.execute_cdp_cmd("Storage.clearDataForOrigin", {
"origin": "https://example.com", # Especifique o domínio do site
"storageTypes": "all"
})
< /code>
Большую часть времени он может сделать эту очистку, но иногда он дает эту ошибку < /p> blockquote>
Urllib3.exceptions.readtimeouterror < /p> < /> < /> < /> httpconnectionpool (host = ', hosthost>. вне. (Читать тайм -аут = 120) < /p>
< /blockquote>
driver = webdriver.Chrome()
После генерации ошибки «чтение времени», программа становится очень медленной и не может выполнять основные функции драйвера как Driver.get ("https://example.com/") и требует много времени, чтобы попытаться запустить Driver.get или другие команды. Oct ' Программа Script \ возвращается к нормальному, если я перейду к Chrome, инициализированному Webdriver и перезаряжаю сайт вручную, нажав кнопку перезарядки.from selenium import webdriver
from urllib3.exceptions import ReadTimeoutError
driver = webdriver.Chrome()
driver.execute_cdp_cmd("Network.enable", {})
def acessar_site():
while True:
try:
driver.get("https://x.com/")
print("Site acessado com Sucesso!")
break
except Exception:
print("Não consegui acessar o site, tentando novamente")
driver.stop_client()
def limpeza_completa_offline():
try:
acessar_site()
# Define o código JavaScript que bloqueia todas as requisições
block_requests_script = """
window.blockAllRequests = () => {
// Substituir fetch
const originalFetch = window.fetch;
window.fetch = (...args) => {
console.log('Requisição fetch bloqueada:', args);
return new Promise(() => {}); // Retorna uma Promise que nunca será resolvida
};
// Substituir XMLHttpRequest
const originalXhrOpen = window.XMLHttpRequest.prototype.open;
const originalXhrSend = window.XMLHttpRequest.prototype.send;
window.XMLHttpRequest.prototype.open = function(method, url, ...rest) {
this._url = url;
originalXhrOpen.call(this, method, url, ...rest);
};
window.XMLHttpRequest.prototype.send = function(...args) {
if (this._url) {
console.log('Requisição XMLHttpRequest bloqueada:', this._url);
}
};
// Substituir EventSource (SSE)
const originalEventSource = window.EventSource;
window.EventSource = function(url, config) {
console.log('Requisição EventSource bloqueada:', url);
};
// Substituir WebSocket
const originalWebSocket = window.WebSocket;
window.WebSocket = function(url, protocols) {
console.log('Requisição WebSocket bloqueada:', url);
throw new Error("WebSocket bloqueado!");
};
};
window.blockAllRequests();
"""
print("Injetando java no contexto da página: bloquear requisições")
# Executa o código JavaScript para bloquear as requisições
driver.execute_script(block_requests_script)
print("Comando CMD: Limpando Local Storage, IndexedDB, Cache Storage, Interrompendo e Desregistrando os Services Workers.")
# Limpa Local Storage, IndexedDB, Cache Storage, Interrompe e Desrigistra os Services Workers.
driver.execute_cdp_cmd("Storage.clearDataForOrigin", {
"origin": "https://x.com", # Especifique o domínio do site
"storageTypes": "all"
})
except ReadTimeoutError as RTE:
print(F"Excessão: {RTE}")
print("Breakpoint; Primeiro tente executar a def no pdb e depois tente continuar a execução do script >> acessar_site()")
breakpoint()
acessar_site()
while True:
# Algum momento o erro aparece
limpeza_completa_offline()
< /Code>
Я попросил собственную поддержку Selenium webdriver и получил ответ: < /p>
selenium действует как HTTP -сервер, который принимает запросы и предоставляет ответы синхронным образом. ответ. В большинстве случаев это означает, что снова невозможно взаимодействовать с драйвером. В зависимости от того, сколько времени обычно занимает, это может иметь смысл увеличить время чтения.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... port-nnnnn