1

I'm trying to run a headless Chrome process with an extension1. I'm using WSL.

For testing purposes I can use one of two browsers:

  • Ubuntu: Google Chrome 86.0.4240.183
  • Windows: Version 86.0.4240.183 (Official Build) (64-bit)

For production purposes the Ubuntu's Chrome is the only viable option2.

The rest of the stack:

  • Python 3.6.9
  • selenium: 3.141.0

In order to overcome Chrome not being able to start headlessly with extensions I use PyVirtualDisplay.

from selenium import webdriver
from pyvirtualdisplay import Display

display = Display(visible=0, size=(800, 600), backend='xvfb')
display.start()

options = ChromeOptions()
options.add_extension('/home/plonca/selenium_draft/extensions.crx')
options.add_argument('--no-sandbox')

windows_chrome_driver = '/home/plonca/python_virtual_environments/selenium_jupyter_venv/bin/chromedriver.exe'
ubuntu_chrome_driver = '/home/plonca/python_virtual_environments/selenium_jupyter_venv/bin/chromedriver'

chrome_driver = webdriver.Chrome(executable_path=ubuntu_chrome_driver
                                , options=options
                                )

The problem occurs in the last line: if the windows_chrome_driver is set as executable_path everything is fine. If I set ubuntu_chrome_driver instead, I get an error:

WebDriverException: Message: unknown error: failed to wait for extension background page to load: chrome-extension://bmlddehkgnjdalnfaecgflmmeknlbohi/_generated_background_page.html
from tab crashed

I wonder what the cause of the error might be. How to make chrome_driver work in the headless environment?

1 The extension is needed so that I can authenticate via a pop-up window. The extension has been created according to instructions found here. Other options such as sending username and password in the URL or automating the click with AutoIt doesn't work.

2 Please note that the Chrome seems to be the only option since using Firefox is a matter of an unresolved issue.

balkon16
  • 1,338
  • 4
  • 20
  • 40

0 Answers0