kuroneko's blog

とりとめもなく気づいたことを書いていく

windows + python + selenium + PhantomJSで実行エラー(Network Error)

PhantomJSの使い方はいろんなブログに載っていますが、どうしても「Network Error」というhtmlがwebdriverから帰ってきてしまう状況でした(driver = webdriver.PhantmJS()の部分でエラーになる)。
起動する以前の問題のためか、検索しても引っかからず途方に暮れていたのですが、なんとかなったのでメモとして残します。

結論を言うと、IEのproxy設定を外したら上手くいきました><

自分の場合、社内のproxy環境下において、proxyの除外対象のURLであっても問答無用にエラーになりました。ただ、DOSプロンプトからは実行することができていたことで(phantomjs hello.jsなど)、なぜだ。。。と苦悩しました。家にパソコンを持って帰ってきて、さー原因を探ろうとプロキシを外してインターネット検索しながら動かしてみると、あら不思議、動くじゃありませんか。。。笑うしかなかった。

もし同様の方がいて、解決できる手助けとなれば幸いです。

 

以下は参考情報です。

■環境

■初期設定

  1. pythonをインストール
  2. seleniumのインストール(pip install selenium)
  3. PhantmJSをダウンロードしてパスを通す

ソースコード

下記のように公式サンプルで出てくるやつです。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.PhantomJS()
driver.get("http://www.python.org")
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()

■事象

  • Network Errorというhtmlが返ってくる(今サンプルが手元にない)。
  • Chrome("path_to_webdriver.exe")やFirefox()のwebdriverの場合にはちゃんと動く
  • IE("path_to_webdriver.exe")はphantomJS()と同じくエラー(セキュリティ設定のProtected Mode以前の状態)
  • DOSからphantomjs hello.jsなどは動いて、正常に終了する(パス設定、webdriverも問題なさそう)
  • firewallやセキュリティソフトを無効にしても変化なし(エラーのまま)