Can't run PhantomJS in python via Selenium
Question: 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?


Answer: 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.

