WebDriverException: Service U:/Scraping/chromedriv

2019-01-29 04:34发布

I've been trying to get the webdriver to work with Python in Chrome at work, but can't for the life of me figure out what's wrong, despite troubleshooting for most of the day.

I've unzipped chromedriver to the folder I'm working in. I've tried using the executable_path argument with chromedriver. I've tried updating the options within chromedriver to direct to the Chrome.exe file.

Code is below. Pretty straightforward. 'url' has an address from earlier in the code that I'm not including here - the script doesn't even make it that far anyways.

from selenium import webdriver

driver = webdriver.Chrome(executable_path = 'U:/Scraping/chromedriver.exe')
driver.get(url)

And the error:

    Traceback (most recent call last):

  File "<ipython-input-67-db2ce2aa7cdf>", line 1, in <module>
    runfile('U:/Scraping/Project.py', wdir='U:/Scraping')

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "U:/Scraping/Project.py", line 14, in <module>
    driver = webdriver.Chrome(executable_path = 'U:/Scraping/chromedriver.exe')

  File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 68, in __init__
    self.service.start()

  File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\common\service.py", line 98, in start
    self.assert_process_still_running()

  File "C:\ProgramData\Anaconda3\lib\site-packages\selenium\webdriver\common\service.py", line 111, in assert_process_still_running
    % (self.path, return_code)

WebDriverException: Service U:/Scraping/chromedriver.exe unexpectedly exited. Status code was: 1

2条回答
够拽才男人
2楼-- · 2019-01-29 05:34

Same error here. My issue was that I had chromedriver.exe on a company sharedrive. Some firewall or security setting was presumably preventing python from accessing the executable file in that remote location.

I made chromedriver.exe local and it worked.

查看更多
闹够了就滚
3楼-- · 2019-01-29 05:36

While passing the absolute path of the ChromeDriver binary through the argument executable_path you need to mention the path within single quotes (i.e. '') seperated by a single forward slash (i.e. \) along with the raw switch (i.e. r) as follows:

from selenium import webdriver

driver = webdriver.Chrome(executable_path=r'U:\Scraping\chromedriver.exe')
driver.get(url)

Additional Consideration

  • Ensure that you have downloaded the exact format of the ChromeDriver binary from the download location pertaining to your underlying OS among:

    • chromedriver_win32.zip: For Windows OS
  • Ensure that ChromeDriver binary have executable permission for the non-administrator user.

  • Execute your Test as a non-administrator user.
  • Another potential reason for the error can be due to missing the entry 127.0.0.1 localhost in /etc/hosts

Solution

  • Windows OS - Add 127.0.0.1 localhost to /etc/hosts

  • Mac OSX - Ensure the following entries:

    127.0.0.1   localhost
    255.255.255.255 broadcasthost
    ::1 localhost
    fe80::1%lo0 localhost   
    

References

As per the discussion in selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service geckodriver:

  • Selenium does not require 127.0.0.1 localhost to be explicitly set in the host file.
  • However it is mandatory requirement to map localhost to the IPv4 local loopback (127.0.0.1)
  • The mechanism of this mapping does not have to be through the hosts file always.
  • On Windows OS systems it is not mapped in the hosts file at all (resolving localhost is done by the DNS resolver).

TL;DR

How to reset the Hosts file back to the default

查看更多
登录 后发表回答