Home > Mobile >  FirefoxProfile with private mode for Selenium
FirefoxProfile with private mode for Selenium

Time:12-02

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

CodePudding user response:

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:

CodePudding user response:

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.

  • Related