Attribute Error : 'str' object has no attribute '_ignore_local_proxy' with ChromeDriverManager

Question:

I’ve just started with Selenium and I’m already stuck at the first step: setting up the driver.
I keep getting this error:

‘str’ object has no attribute ‘_ignore_local_proxy’.

Here’s the code :

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import requests

driver = webdriver.Chrome(ChromeDriverManager().install())

And the whole traceback :

AttributeError                            Traceback (most recent call last)
Cell In[21], line 1
----> 1 driver = webdriver.Chrome(ChromeDriverManager().install())

File ~AppDataLocalPackagesPythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0LocalCachelocal-packagesPython311site-packagesseleniumwebdriverchromewebdriver.py:49, in WebDriver.__init__(self, options, service, keep_alive)
     45 self.keep_alive = keep_alive
     47 self.service.path = DriverFinder.get_path(self.service, self.options)
---> 49 super().__init__(
     50     DesiredCapabilities.CHROME["browserName"],
     51     "goog",
     52     self.options,
     53     self.service,
     54     self.keep_alive,
     55 )

File ~AppDataLocalPackagesPythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0LocalCachelocal-packagesPython311site-packagesseleniumwebdriverchromiumwebdriver.py:60, in ChromiumDriver.__init__(self, browser_name, vendor_prefix, options, service, keep_alive)
     51 self.service.start()
     53 try:
     54     super().__init__(
     55         command_executor=ChromiumRemoteConnection(
     56             remote_server_addr=self.service.service_url,
     57             browser_name=browser_name,
     58             vendor_prefix=vendor_prefix,
     59             keep_alive=keep_alive,
...
     63     )
     64 except Exception:
     65     self.quit()

AttributeError: 'str' object has no attribute '_ignore_local_proxy'

I’m using VS Code with Python 3.11, if that can somehow help.

Asked By: Martin LE PADAN

||

Answers:

This error most likely means, somewhere in the code, there’s a string object expected from webdriver but it’s not being passed in.

If this is all the code you have, check the versions to ensure there’s no mismatch.

Answered By: Zayn Patel

This is due to changes in selenium 4.10.0:
https://github.com/SeleniumHQ/selenium/commit/9f5801c82fb3be3d5850707c46c3f8176e3ccd8e

Changes_in_selenium_4_10_0

Note that the first argument is no longer executable_path, but options. (ChromeDriverManager().install() returns the path to the install location.) Since selenium manager is now included with selenium 4.10.0, you should no longer use ChromeDriverManager at all.

from selenium import webdriver

driver = webdriver.Chrome()
# ...
driver.quit()

However, if you still want to pass in the executable_path to an existing driver, you must use the service arg now:

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

service = Service(executable_path="PATH_TO_DRIVER")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# ...
driver.quit()
Answered By: Michael Mintz
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.