Problem :
I am trying to run a script with selenium using chromedriver as the driver. I receive the following error information:
Traceback (most recent call last):
File "C:UserssamdeAppDataLocalProgramsPythonPython37-32libsite-packagesseleniumwebdrivercommonservice.py", line 76, in start
stdin=PIPE)
File "C:UserssamdeAppDataLocalProgramsPythonPython37-32libsubprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "C:UserssamdeAppDataLocalProgramsPythonPython37-32libsubprocess.py", line 1178, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "scrape.py", line 10, in <module>
options= chrome_options)
File "C:UserssamdeAppDataLocalProgramsPythonPython37-32libsite-packagesseleniumwebdriverchromewebdriver.py", line 73, in __init__
self.service.start()
File "C:UserssamdeAppDataLocalProgramsPythonPython37-32libsite-packagesseleniumwebdrivercommonservice.py", line 83, in start
os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
I think this maybe a path issue, but am unsure how to fix it. I added the chromedriver location to PATH in “Environment Variables” when I installed the chrome driver. Its location/ path is : “C:Web_Drivers”.
When I call chromedriver in powershell, I receive the following message:
Starting ChromeDriver 76.0.3809.126 (d80a294506b4c9d18015e755cee48f953ddc3f2f-refs/branch-heads/3809@{#1024}) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
Solution :
Basic Troubleshooting
-
You may want to try using a regular command prompt (rather than PowerShell) and see if that helps to resolve the issue.
-
Another consideration may be if you placed the path to
chromedriver.exe
in yourUser
path rather than yourSystem
path. -
You should log out and log in after updating your path variables. In some cases, you may need to restart the PC as well.
Calling ChromeDriver
Assuming ChromeDriver resides in your Windows path, use either chromedriver
or chromedriver.exe
in your script e.g.:
ex. without executable_path
driver = webdriver.Chrome('chromedriver')
ex. with executable_path
driver = webdriver.Chrome(options=options, executable_path='chromedriver')
ex. with executable_path
and a variable
chromedriver_path = 'chromedriver'
driver = webdriver.Chrome(options=options, executable_path=chromedriver_path)
Other Options
There are also several options for specifying the path to ChromeDriver directly:
-
Assuming
chromedriver.exe
is in the same folder as your script:driver = webdriver.Chrome()
-
Specifying the full path to
chromedriver.exe
withoutexecutable_path
:driver = webdriver.Chrome('C:/path/to/chromedriver.exe')
-
Specifying the full path to
chromedriver.exe
withexecutable_path
:driver = webdriver.Chrome(options=options, executable_path='C:/path/to/chromedriver.exe')
-
Specifying the full path to
chromedriver.exe
withexecutable_path
and a variable:chromedriver_path = 'C:/path/to/chromedriver.exe' driver = webdriver.Chrome(options=options, executable_path=chromedriver_path)
Be aware that while you can also use C:pathtochromedriver.exe
and C:\path\to\chromedriver.exe
, some ChromiumChromeDriver forks may not accept C:pathtochromedriver.exe
. In this instance, try using either \
or /
instead.