Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DeprecationWarning: firefox_profile has been deprecated, please pass in an Options object

First, I want to use some addons while selenium controlling my firefox.

So, i tried load default profile of firefox in selenium code.

My code:

from selenium.webdriver.firefox.firefox_profile import FirefoxProfile

profile_path = r'C:\Users\Administrator\AppData\Roaming\Mozilla\Firefox\Profiles\y1uqp5mi.default'
default_profile = FirefoxProfile(profile_path)

driver = webdriver.Firefox(service=service, options=options, firefox_profile=default_profile)

But, when i start the code, a DeprecationWarning happened: firefox_profile has been deprecated, please pass in an Options object

I search a lot and i don't think it's a difficult problem, but sadly i can't solve this problem finally, maybe my bad english encumber me... ...

like image 305
cmy2019 Avatar asked Oct 14 '21 13:10

cmy2019


2 Answers

Here is the documentation for this: https://www.selenium.dev/documentation/webdriver/capabilities/driver_specific_capabilities/#setting-a-custom-profile

I tried this locally and it worked:

EDITED: I've changed the code, so there are no deprecation warnings

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

profile_path = r'C:\Users\Administrator\AppData\Roaming\Mozilla\Firefox\Profiles\y1uqp5mi.default'
options=Options()
options.set_preference('profile', profile_path)
service = Service(r'C:\WebDriver\bin\geckodriver.exe')

driver = Firefox(service=service, options=options)

driver.get("https://selenium.dev")

driver.quit()
like image 50
Atanas Atanasov Avatar answered Oct 16 '22 09:10

Atanas Atanasov


This error message...

firefox_profile has been deprecated, please pass in an Options object

...implies that FirefoxProfile() have been Deprecated and with selenium4 to use a custom profile you have to use an instance of Options.


This DeprecationWarning was inline with the following CHANGELOGS:

  • Selenium 4 beta 1

    • Deprecate all but Options and Service arguments in driver instantiation. (#9125,#9128)
  • Selenium 4 beta 2

    • Deprecate using a Firefox profile in Options
  • Selenium 4 Beta 3

    • Only give deprecation warning if Profile is being used in options

All the configurations which was earlier set through profile.set_preference() now can be set through options.set_preference() as follows:

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

profile_path = r'C:\Users\Admin\AppData\Roaming\Mozilla\Firefox\Profiles\s8543x41.default-release'
options=Options()
options.set_preference('profile', profile_path)
options.set_preference('network.proxy.type', 1)
options.set_preference('network.proxy.socks', '127.0.0.1')
options.set_preference('network.proxy.socks_port', 9050)
options.set_preference('network.proxy.socks_remote_dns', False)
service = Service('C:\\BrowserDrivers\\geckodriver.exe')
driver = Firefox(service=service, options=options)
driver.get("https://www.google.com")
driver.quit()

tl; dr

Setting a custom profile

like image 29
undetected Selenium Avatar answered Oct 16 '22 08:10

undetected Selenium