Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
758 views
in Technique[技术] by (71.8m points)

python - selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service chromedriver.exe while opening chrome browser

I have following environment at my local Chrome 67 Python 3.5.0 Selenium 3.12.0

I have downloaded chromedriver with version 2.39

I have .py file as follows

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome(executable_path="hromedriver.exe")
driver.get('http://www.google.com')
time.sleep(5)
search_box = driver.find_element_by_name('q')
search_box.send_keys('Python')
search_box.submit()
time.sleep(5)
driver.quit()

I am getting following error.

C:Python354python.exe D:/formf.py
Traceback (most recent call last):
  File "D:/PCPNDT/form.py", line 4, in <module>
    driver = webdriver.Chrome(executable_path="chromedriver.exe")  # Optional argument, if not specified will search path.
  File "C:Python354libsite-packagesseleniumwebdriverchromewebdriver.py", line 68, in __init__
    self.service.start()
  File "C:Python354libsite-packagesseleniumwebdrivercommonservice.py", line 104, in start
    raise WebDriverException("Can not connect to the Service %s" % self.path)
selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service chromedriver.exe

I also tried with other webdriver like geckodriver.exe still same error.

Please help me out to resolve this error.

Thanks!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

At a first glance to your code trial it seems there is a minor bug in the value of the argument executable_path. Instead of hromedriver.exe it should have been:

# Windows OS
driver = webdriver.Chrome(executable_path=r'C:pathochromedriver.exe')
# Linux OS
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

This error message...

selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service chromedriver.exe

...implies that the the program/script was unable to initiate/spawn the ChromeDriverService through chromedriver.exe.

The 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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...