Selenium запускает сеанс Chrome, но вылетает сразу после - PullRequest
0 голосов
/ 11 марта 2020

Я получаю одну из этих ошибок при попытке открыть сеанс.

selenium.common.exceptions.SessionNotCreatedException: Сообщение: сеанс не создан из chrome недоступен (Информация сеанса: chrome = 80.0.3987.132)

selenium.common.exceptions.SessionNotCreatedException: Сообщение: сеанс не создан из отключенного: невозможно получить сообщение от средства визуализации (информация о сеансе: chrome = 80.0.3987.132)

ChromeDriver = 80.0.3987.106

Я погуглил эти ошибки, и ни одно из решений не помогло, вот мой текущий код: (одно из решений предложило добавить Chrome опции)

from selenium import webdriver

class YoutubeBot():
    def __init__(self):
        chrome_options = webdriver.ChromeOptions()
        chrome_options.add_argument('--no-sandbox')
        self.driver = webdriver.Chrome('/usr/local/bin/chromedriver', chrome_options=chrome_options)

РЕДАКТИРОВАТЬ: я теперь узнал, что эта проблема решается с помощью безголового, я все еще хотел бы проверить свой код во время написания его, есть ли другое решение, возможно? (Я использую Xfce4 DE на Arch Linux)

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Решение было простым, sudo файлом. Я чувствую себя глупо и должен был проверить это раньше, вероятно, должен был принять это во внимание. При запуске все, что мне нужно было сделать, это sudo python -i main.py и Chrome магическим образом загрузились без ошибки.

0 голосов
/ 11 марта 2020

Это сообщение об ошибке ...

selenium.common.exceptions.SessionNotCreatedException: Message: session not created from disconnected: Unable to receive message from renderer (Session info: chrome=80.0.3987.132)

... означает, что ChromeDriver не смог запустить / создать новый сеанс Chrome Браузер .


Вам необходимо учесть несколько моментов:

  • Абсолютное местоположение ChromeDriver должно быть передано через Ключ / Значение пара следующим образом:

    driver = webdriver.Chrome(executable_path='/Users/qa/Documents/Python/chromedriver')
    
  • При инициализации сеанса необходимо использовать options аргумент вместо chrome_options.

  • Таким образом, ваш кодовый блок будет:

    from selenium import webdriver
    
    class YoutubeBot():
        def __init__(self):
            chrome_options = webdriver.ChromeOptions()
            chrome_options.add_argument('--no-sandbox')
            self.driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver', options=chrome_options)
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...