Как запустить Selenium в безголовом режиме с использованием параметра add_extension на Ubuntu?

Я использую метод options.add_extension(plugin_file) в Selenium для авторизации прокси в режиме add_argument(hedless=new). Скрипт был разработан на Mac, но при его запуске на Ubuntu возникает ошибка:

```
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: failed to wait for extension background page to load: chrome-extension://amggfdkfdohholnamoigfcaaknlgppoo/_generated_background_page.html
0|main  | from unknown error: page could not be found: chrome-extension://amggfdkfdohholnamoigfcaaknlgppoo/_generated_background_page.html
```

Не могу понять, почему на Mac скрипт работает без проблем, а на Linux возникает такая ошибка. В чем может заключаться причина этой разницы и как я могу это исправить? Версии Selenium и Chrome идентичны на обоих системах, я переустанавливал их несколько раз, но это не помогло.
  • 8 сентября 2024 г. 15:43
Ответы на вопрос 1
Ошибка, которую вы получаете, связана с тем, что Chrome не может загрузить фоновую страницу расширения в безголовом режиме на Ubuntu. Эта проблема может возникать из-за различных настроек окружения и зависимостей, которые могут отличаться между macOS и Ubuntu. Вот несколько подходов, которые могут помочь вам решить эту проблему:

1. **Проверьте наличие всех зависимостей**:
   Убедитесь, что на вашей системе Ubuntu установлены все необходимые зависимости для запуска Chrome в безголовом режиме. Вы можете установить их с помощью команды:

   ```bash
   sudo apt-get install -y libxss1 libappindicator3-1 libindicator7
   ```

2. **Используйте параметры запуска**:
   Попробуйте добавить некоторые параметры запуска Chrome. Например:

   ```python
   from selenium import webdriver
   from selenium.webdriver.chrome.service import Service
   from selenium.webdriver.chrome.options import Options

   chrome_options = Options()
   chrome_options.add_argument('--headless')
   chrome_options.add_argument('--disable-gpu')
   chrome_options.add_argument('--no-sandbox')
   chrome_options.add_argument('--disable-dev-shm-usage')  # Некоторые системы могут требовать это
   chrome_options.add_extension('path_to_your_extension.crx')

   service = Service('path_to_chromedriver')  # задайте путь к chromedriver
   driver = webdriver.Chrome(service=service, options=chrome_options)
   ```

   Обратите внимание на параметры `--no-sandbox` и `--disable-dev-shm-usage`, которые могут помочь в установках безголового Chrome.

3. **Проверка кривой версии расширений**:
   Убедитесь, что используемое вами расширение совместимо с безголовым режимом. Некоторые расширения могут не работать корректно в безголовом режиме.

4. **Логи Chrome**:
   Включите логи Chrome, чтобы получить более детальное сообщение об ошибке. Вы можете сделать это следующим образом:

   ```python
   chrome_options.add_argument('--enable-logging')
   chrome_options.add_argument('--v=1')  # чем выше значение, тем больше информации
   ```

5. **Обновите Chrome и драйвер**:
   Убедитесь, что у вас установлены самые последние версии Chrome и ChromeDriver.

6. **Проверьте файл расширения**:
   Убедитесь, что файл расширения `.crx` или папка с расширением корректны и доступны. Вы можете попробовать загрузить расширение из папки вместо `.crx`.

Если ни один из этих советов не решает проблему, попробуйте создать минимальный пример, который воспроизводит ошибку, и проверьте его на разных версиях Chrome и ChromeDriver, чтобы выявить причину.
Похожие вопросы