dimmy
dimmy

Reputation: 31

FirefoxProfile with private mode for Selenium

I'm tying to create multiple windows of one website, so I need new identity for each. Private mode would be nice solution for me, I think. But old ways to do it doesn't give result:

firefox_profile = webdriver.FirefoxProfile()
firefox_profile.set_preference("browser.privatebrowsing.autostart", True)
browser = webdriver.Firefox(firefox_profile=firefox_profile)

def main():
    browser.switch_to.new_window('window')
    browser.get("https://example.com")

I couldn't find any information in docks, so maybe you can help

Upvotes: 1

Views: 2167

Answers (3)

dimmy
dimmy

Reputation: 31

I figured how to make private mode for firefox:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options


def main():
    firefox_options = Options()
    firefox_options.add_argument('-private')
    driver = webdriver.Firefox(options=firefox_options)
    # driver.get("https://example.com")


if __name__ == "__main__":
    main()

I've commented line with get to make sure that browser truly opens in private mode. You can see it in tab name.

But it didn't gave me new identity for each new window as I expected.

Upvotes: 1

undetected Selenium
undetected Selenium

Reputation: 193058

As per Selenium 4 beta 1 release notes:

Deprecate all but Options and Service arguments in driver instantiation. (#9125,#9128)

So you will see an error as:

firefox_profile has been deprecated, please pass in an Options object

You have to use an instance of Options to pass the FirefoxProfile preferences as follows:

from selenium import webdriver
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.chrome.service import Service

def main():
  firefox_options = Options()
  firefox_options.set_preference("browser.privatebrowsing.autostart", True)
  s = Service('C:\\BrowserDrivers\\geckodriver.exe')
  driver = webdriver.Firefox(service=s, options=firefox_options)
  driver.get("https://www.google.com")

if __name__== "__main__" :
  main()

Browser Snapshot:

FirefoxProfile_Options


References

You can find a couple of relevant detailed discussions in:

Upvotes: 2

FLAK-ZOSO
FLAK-ZOSO

Reputation: 4088

This should be the "new" way:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--incognito")

service = Service(r"C:\Program Files (x86)\chromedriver.exe")
driver = webdriver.Chrome(service=service, options=chrome_options)

It should work the same way with Firefox.

Upvotes: 0

Related Questions