Вопрос-Ответ

unknown error: session deleted because of page crash from unknown error: cannot determine loading status from tab crashed with ChromeDriver Selenium

неизвестная ошибка: сеанс удален из-за сбоя страницы из-за неизвестной ошибки: не удается определить состояние загрузки из-за сбоя вкладки с помощью ChromeDriver Selenium

Я использую InstaPy, в которых используются Python и Selenium. Я запускаю скрипт на Cron, и время от времени он вылетает. Так что это действительно нерегулярно, иногда он работает нормально. Я также опубликовал репо на GitHub, но там не получил ответа, поэтому я спрашиваю здесь, есть ли у кого-нибудь идея, почему.

Это сервер digital ocean ubuntu, и я использую его в безголовом режиме. Версия драйвера видна в журнале. вот сообщения об ошибках.:

ERROR [2018-12-10 09:53:54] [user]  Error occurred while deleting cookies from web browser!
b'Message: invalid session id\n (Driver info: chromedriver=2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634),platform=Linux 4.15.0-42-generic x86_64)\n'
Traceback (most recent call last):
File "/root/InstaPy/instapy/util.py", line 1410, in smart_run
yield
File "./my_config.py", line 43, in <module>
session.follow_user_followers(['xxxx','xxxx','xxxx','xxxx'], amount=100, randomize=True, interact=True)
File "/root/InstaPy/instapy/instapy.py", line 2907, in follow_user_followers
self.logfolder)
File "/root/InstaPy/instapy/unfollow_util.py", line 883, in get_given_user_followers
channel, jumps, logger, logfolder)
File "/root/InstaPy/instapy/unfollow_util.py", line 722, in get_users_through_dialog
person_list = dialog_username_extractor(buttons)
File "/root/InstaPy/instapy/unfollow_util.py", line 747, in dialog_username_extractor
person_list.append(person.find_element_by_xpath("../../../*")
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webelement.py", line 351, in find_element_by_xpath
return self.find_element(by=By.XPATH, value=xpath)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webelement.py", line 659, in find_element
{"using": by, "value": value})['value']
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed
(Session info: headless chrome=70.0.3538.110)
(Driver info: chromedriver=2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634),platform=Linux 4.15.0-42-generic x86_64)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/root/InstaPy/instapy/instapy.py", line 3845, in end
self.browser.delete_all_cookies()
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 878, in delete_all_cookies
self.execute(Command.DELETE_ALL_COOKIES)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.6/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: chrome not reachable
(Session info: headless chrome=71.0.3578.80)
(Driver info: chromedriver=2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634),platform=Linux 4.15.0-42-generic x86_64)

Есть идеи, в чем может быть причина и как ее решить?

Спасибо за информацию. И ребята из http://treestones.ch / помогли мне.

Переведено автоматически
Ответ 1

Хотя вы видите ошибку как:

Error occurred while deleting cookies from web browser!
b'Message: invalid session id\n (Driver info: chromedriver=2.44.609551 (5d576e9a44fe4c5b6a07e568f1ebc753f1214634),platform=Linux 4.15.0-42-generic x86_64)\n'

Основным исключением является:

selenium.common.exceptions.WebDriverException: Message: unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed

Ваши пробные версии кода дали бы нам некоторые подсказки, что происходит не так.


Решение

Существуют различные решения этой проблемы. Однако в соответствии с UnknownError: сеанс удален из-за сбоя страницы из-за сбоя вкладки эта проблема может быть решена любым из следующих решений:


  • Добавьте следующее chrome_options:


    chrome_options.add_argument('--no-sandbox')         

  • Похоже, что Chrome вылетает в контейнерах Docker на определенных страницах из-за слишком маленького размера /dev/shm. Поэтому вам, возможно, придется исправить маленький размер /dev/shm.


  • Пример:


    sudo mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512M tmpfs /dev/shm

  • Это также работает, если вы используете -v /dev/shm:/dev/shm опцию для совместного использования хоста /dev/shm


  • Другой способ заставить это работать - добавить chrome_options как --disable-dev-shm-usage. Это заставит Chrome использовать /tmp каталог вместо этого. Однако это может замедлить выполнение, поскольку вместо памяти будет использоваться диск.


    chrome_options.add_argument('--disable-dev-shm-usage')        


из-за сбоя вкладки

сбой вкладки был WIP (работа в процессе) с командой Chromium в течение некоторого времени, что связано с попыткой Linux всегда использовать /dev / shm для неисполняемой памяти. Вот ссылки :


Ссылка

Вы можете найти пару соответствующих обсуждений в:

Ответ 2

На случай, если кто-то сталкивается с этой проблемой с контейнерами docker:

используйте флаг --shm-size=2g при создании контейнера, и ошибка исчезнет. Этот флаг позволяет контейнеру использовать общую память хоста.

Пример

$ docker run -d --net gridNet2020 --shm-size="2g" -e SE_OPTS="-browser applicationName=zChromeNodePdf30,browserName=chrome,maxInstances=1,version=78.0_debug_pdf" -e HUB_HOST=selenium-hub-3.141.59 -P -p 5700:5555 --name zChromeNodePdf30 -v /var/lib/docker/sharedFolder:/home/seluser/Downloads selenium/node-chrome:3.141.59-xenon

Источник: https://github.com/SeleniumHQ/docker-selenium

Ответ 3

Я получал следующую ошибку на моем сервере Ubuntu:


selenium.common.exceptions.WebDriverException: Сообщение: неизвестная ошибка: сеанс удален из-за сбоя страницы из-за сбоя вкладки (Информация о сеансе: безголовый chrome = 86.0.4240.111) (Информация о драйвере: chromedriver = 2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706), платформа = Linux 5.4.0-1029-aws x86_64 )


Оказалось, что причиной ошибки было недостаточно места на диске на сервере, и решением было расширить мое дисковое пространство. Вы можете проверить этот вопрос для получения дополнительной информации.

Ответ 4

Нам нужно указать память shm отдельно, --shm-size = 2g В случае docker используйте следующую конфигурацию - у меня все работает нормально


сервисы: chrome: изображение: selenium / node-chrome: 4.0.0-rc-1-prerelease-20210823 shm_size: 2 гб

2024-01-01 08:58 python selenium selenium-webdriver