最近ずっとちゃんと動いてたSeleniumがエラーを吐くようになったのでその調査のメモをば。
エラー文
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.google.co.jp/')
driver.close()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/anaconda3/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 68, in __init__
self.service.start()
File "/anaconda3/lib/python3.6/site-packages/selenium/webdriver/common/service.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
driver = webdriver.Chrome()
のところで落ちていた。
Can not connect to the Service %s" % self.path
を見た感じでパスかネットワークの問題かなと大まかに目処を立てた。
類似事例の収集
selenium でスクレイピングする際 WebDriverException “Can not connect to the Service chromedriver” がおきる
最新版を落としてインストールしてPATH通してね、という話なんですが自分のところではこれは大丈夫だった。
https://github.com/mozilla/geckodriver/issues/270
I’m not able to reproduce this with selenium-3.0.0b3 off pip. It looks like geckodriver is starting successfully on the port the Python client is requesting it to, and that the client subsequently times out when attempting to connect on that port.
色々漁っていたところこちらを発見。
ポートに接続しようとしているもののそこでタイムアウトが起こっている場合があるとのこと。
/etc/hostsの修正
直近で、Laravelの環境構築でネットワーク周りを少しいじったことを思い出し確認するとlocalhostがコメントアウトされていた。
# 127.0.0.1 localhost
このコメントアウトを外すことでちゃんとSelenium動くようになってくれた。