webfp / tor-browser-selenium

Tor Browser automation with Selenium.
MIT License
548 stars 100 forks source link

Headless mode fails since Selenium 4.12.0 #205

Closed robgjansen closed 9 months ago

robgjansen commented 9 months ago

Minimal headless test script:

import tbselenium.common as cm
from tbselenium.tbdriver import TorBrowserDriver
from tbselenium.utils import launch_tbb_tor_with_stem

tbb_dir = "/home/test/tor-browser/"
tor_process = launch_tbb_tor_with_stem(tbb_path=tbb_dir)

with TorBrowserDriver(
        tbb_path=tbb_dir,
        executable_path="/home/test/geckodriver",
        tbb_logfile_path="/home/test/tbb.log",
        headless=True, 
        tor_cfg=cm.USE_STEM) as driver:
    driver.load_url("https://check.torproject.org")

tor_process.kill()

Running this with geckodriver-v0.31.0-linux64 and tor-browser-13.0.6.

The test script fails

$ python3 test.py
Traceback (most recent call last):                                                                                                                                  
  File "/home/test/test.py", line 8, in <module>                                                                                                             
    with TorBrowserDriver(                                                                                                                                          
  File "/home/test/tbenv/lib/python3.10/site-packages/tbselenium/tbdriver.py", line 103, in __init__                                                         
    super(TorBrowserDriver, self).__init__(                                                                                                                         
  File "/home/test/tbenv/lib/python3.10/site-packages/selenium/webdriver/firefox/webdriver.py", line 69, in __init__                                         
    super().__init__(command_executor=executor, options=options)                                                                                                    
  File "/home/test/tbenv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 209, in __init__                                         
    self.start_session(capabilities)                                                                                                                                
  File "/home/test/tbenv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 293, in start_session                                    
    response = self.execute(Command.NEW_SESSION, caps)["value"]                                                                                                     
  File "/home/test/tbenv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 348, in execute                                          
    self.error_handler.check_response(response)                                                                                                                     
  File "/home/test/tbenv/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response                                
    raise exception_class(message, screen, stacktrace)                                                                                                              
selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status 1

Using selenium versions 4.16.0, 4.15.0, 4.14.0, and 4.13.0 all failed with the above error, but downgrading selenium to 4.12.0 finally worked for me:

pip remove selenium
pip install "selenium==4.12.0"
gunesacar commented 9 months ago

Thanks for filing this Rob. Will look into this ASAP.