With the following code, on a Mac I tried to start Tor browser with Python and Selenium:
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options
from webdriver_manager.firefox import GeckoDriverManager
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
import os
import time
binary = '/Applications/Tor Browser.app/Contents/MacOS/firefox'
# binary location
if os.path.exists(binary) is False:
raise ValueError("The binary path to Tor firefox does not exist.")
firefox_binary = FirefoxBinary(binary)
browser = None
def get_browser(binary=None, options=None):
global browser
# only one instance of a browser opens
if not browser:
browser = webdriver.Firefox(firefox_binary=binary, options=options)
return browser
browser = get_browser(binary=firefox_binary)
time.sleep(20)
browser.get("http://stackoverflow.com")
time.sleep(10)
html = browser.page_source
print(html)
This actually WORKS, but I get the following warning:
DeprecationWarning: firefox_binary has been deprecated, please pass in a Service object
browser = webdriver.Firefox(firefox_binary=binary,options=options)
I searched for a way to pass this Service
object, but nothing worked: substantially, I tried to pass the object the way other browsers do.
In fact, while other browsers have a documented Service class, even if I can import without any error from selenium.webdriver.firefox.service
a Service
class, the webdriver constructor doesn't feature any service object or it is not documented.
Any help is appreciated.