Can't run PhantomJS in python via Selenium
phantomjs, python, selenium
Solution
There seems to be some issue introduced in newer Selenium, see
http://code.google.com/p/selenium/issues/detail?id=6690
I got a bit further using by using
pip install selenium==2.37
Avoids the stack trace above. Still having problems with driver.save_screenshot('foo.png') resulting in an empty file though.
Problem
I have been trying to run PhantomJS via selenium for past 3 days and have had no success. So far i have tried installing PhantomJS via npm, building it from source, installing via apt-get and downloading prebuilt executable and placing it in /usr/bin/phantomjs. Every time I was able to run this example script loadspeed.js : ``` var page = require('webpage').create(), system = require('system'), t, address; if (system.args.length === 1) { console.log('Usage: loadspeed.js <some URL>'); phantom.exit(); } t = Date.now(); address = system.args[1]; page.open(address, function (status) { if (status !== 'success') { console.log('FAIL to load the address'); } else { t = Date.now() - t; console.log('Loading time ' + t + ' msec'); } phantom.exit(); }); ``` and run it with 'phantomjs test.js http://google.com' and it worked just as it should. but running PhantomJS via selenium in this small python script produces errors: ``` from selenium import webdriver browser = webdriver.PhantomJS() browser.get('http://seleniumhq.org') ``` python test.py ``` Traceback (most recent call last): File "test.py", line 4, in <module> browser.get('http://seleniumhq.org/') File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 176, in get self.execute(Command.GET, {'url': url}) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 162, in execute response = self.command_executor.execute(driver_command, params) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/remote_connection.py", line 350, in execute return self._request(url, method=command_info[0], data=data) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/remote_connection.py", line 382, in _request resp = self._conn.getresponse() File "/usr/lib/python2.7/httplib.py", line 1045, in getresponse response.begin() File "/usr/lib/python2.7/httplib.py", line 409, in begin version, status, reason = self._read_status() File "/usr/lib/python2.7/httplib.py", line 373, in _read_status raise BadStatusLine(line) httplib.BadStatusLine: '' ``` Replacing second LOC with browser = webdriver.Firefox() works fine. I am on Ubuntu 13.10 desktop and same error occurs on Ubuntu 13.04 aswell. Python: 2.7 PhantomJS: 1.9.2 What am I doing wrong here?