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.
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.
This is due to changes in selenium
4.10.0
:
https://github.com/SeleniumHQ/selenium/commit/9f5801c82fb3be3d5850707c46c3f8176e3ccd8e
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()
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.
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.
This is due to changes in selenium
4.10.0
:
https://github.com/SeleniumHQ/selenium/commit/9f5801c82fb3be3d5850707c46c3f8176e3ccd8e
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()