Search code examples
pythonseleniumgoogle-chromeheadlesschrome-options

Selenium: Disable headless when code is running? (Python)


I saw this post:

How to make headless browser visible Python

But apparently it's not possible to disable headless once the code is running, is there an alternative?

My code detects if there is a captcha on the page, displays the window and once the captcha is done it hide again the window.


Solution

  • No, it won't be possible to initialize headlessly and then make it visible to solve the captcha.

    When you configure ChromeDriver using ChromeOptions() to initiate in the process of initiating a new Chrome Browsing Session the configuration gets baked into the chromedriver executable and will persist till the lifetime of the WebDriver and remains uneditable. So you modify the ChromeOptions of the WebDriver instance which is currently in execution.

    Even if you are able to extract the ChromeDriver and ChromeSession attributes e.g. Session ID, Cookies and other session attributes from the already initiated ChromeDriver and Chrome Browsing Session still you won't be able to change the set of attributes of the ChromeDriver.

    A cleaner way would be to call driver.quit() within tearDown(){} method to close and destroy the current ChromeDriver and Chrome Browser instances gracefully and then span a new set of ChromeDriver and Chrome Browser instance with the new set of configurations.


    References

    You can find a couple of relevant discussions in: