#python #multithreading #selenium #selenium-chromedriver #vpn
#python #многопоточность #селен #selenium-chromedriver #vpn
Вопрос:
у меня есть 5 списков, которые я импортирую в свой файл python и запускаю поток для каждого из них.
затем я вызываю функцию «start_connecting ()» и запускаю сеанс браузера (с расширением vpn!). после этого я перебираю список с помощью цикла for и делаю что-то в своем блоке try.
однако после правильной работы в течение случайного времени (20 минут, часов) я получаю исключения «не удается определить статус загрузки».
самое странное в этом то, что 3 потока могут быть не затронуты, а 2 затронуты. в другое время 4 может работать. не зависит от номера потока!
это мой код
for lineNum, x in enumerate(liste, 0):
driver.get(realUrl str(x))
try:
something...
except:
pass
ниже приведено исключение. хотя иногда это может отличаться и говорить «не удается получить сообщение от средства визуализации».
я искал, и некоторые сказали, что обратная трассировка может быть инициатором проблемы с версией.
однако я использую новейшую версию Chrome, как вы можете видеть в сообщении ниже, и последнюю версию chrome-driver-96.0.4664.45 chromedriver. насколько я понимаю, разница между .93 и .45 не может быть проблемой. и я работаю на сервере.
python-selenium-version. оба они самые последние. все ли новое и несовместимо ?!
или проблема может быть в расширении vpn, поскольку я редко получал их также неизвестная ошибка: net ::ERR_TUNNEL_CONNECTION_FAILED или ERR_PROXY_CONNECTION_FAILED
я был бы очень благодарен !!, так как я просматривал stackovererflow и пробовал разные вещи, и замечание, похоже, помогло!
Exception in thread Thread-4 (start_connecting):
Traceback (most recent call last):
File "C:Program FilesPython310libthreading.py", line 1009, in _bootstrap_inner
self.run()
File "C:Program FilesPython310libthreading.py", line 946, in run
self._target(*self._args, **self._kwargs)
File "c:UserslocaladminDocumentsPythonProjectsProject1main.py", line 90, in **start_connecting
driver.get(realUrl str(x))**
File "C:Program FilesPython310libsite-packagesseleniumwebdriverremotewebdriver.py", line 430, in get self.execute(Command.GET, {'url': url})
File "C:Program FilesPython310libsite-packagesseleniumwebdriverremotewebdriver.py", line 418, in execute
self.error_handler.check_response(response)
File "C:Program FilesPython310libsite-packagesseleniumwebdriverremoteerrorhandler.py",
line 243, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot determine loading status
from disconnected: unable to send message to renderer
(Session info: chrome=96.0.4664.93)
Stacktrace:
Backtrace:
Ordinal0 [0x00C46903 2517251]
Ordinal0 [0x00BDF8E1 2095329]
Ordinal0 [0x00AE2848 1058888]
Ordinal0 [0x00AD414A 999754]
Ordinal0 [0x00AD4357 1000279]
Ordinal0 [0x00ADF131 1044785]
Ordinal0 [0x00AD54D9 1004761]
Ordinal0 [0x00AD60E0 1007840]
Ordinal0 [0x00AD572A 1005354]
Ordinal0 [0x00AD4DDA 1002970]
Ordinal0 [0x00AD3F8D 999309]
Ordinal0 [0x00AD4246 1000006]
Ordinal0 [0x00AE3E1A 1064474]
Ordinal0 [0x00B3616D 1401197]
Ordinal0 [0x00B264D3 1336531]
Ordinal0 [0x00B35BBF 1399743]
Ordinal0 [0x00B2639B 1336219]
Ordinal0 [0x00B027A7 1189799]
Ordinal0 [0x00B03609 1193481]
GetHandleVerifier [0x00DD5904 1577972]
GetHandleVerifier [0x00E80B97 2279047]
GetHandleVerifier [0x00CD6D09 534521]
GetHandleVerifier [0x00CD5DB9 530601]
Ordinal0 [0x00BE4FF9 2117625]
Ordinal0 [0x00BE98A8 2136232]
Ordinal0 [0x00BE99E2 2136546]
Ordinal0 [0x00BF3541 2176321]
BaseThreadInitThunk [0x750B0419 25]
RtlGetAppContainerNamedObjectPath [0x776C72FD 237]
RtlGetAppContainerNamedObjectPath [0x776C72CD 189]
Комментарии:
1. Скорее всего, существует потерянный процесс драйвера. При использовании нескольких потоков / драйверов могут возникнуть проблемы с чистым выходом из драйверов. Одна вещь, которая помогает, — это убедиться, что существует режим ожидания (дайте ему не менее 4-5 секунд) между выходом из одного драйвера и запуском нового. (Это дает браузеру время на очистку … webdriver на самом деле не знает, когда выполняется очистка на стороне браузера.) Это может привести к запуску браузера и невозможности удаления файла с идентификатором сеанса драйвера.
2. Я думаю, это также может произойти, когда драйвер остается на земле nomans… например, вы переключаете драйвер на определенный дескриптор окна или фрейм, а затем это окно / вкладка / фрейм закрывается, но драйвер никогда не переключается обратно на существующий дескриптор или родительский фрейм.