Sahi Pro - Sahi headless execution with PhantomJS

PhantomJS is a headless browser based on WebKit. (A headless browser runs without a user interface)

Documentation since Sahi Pro V4.3.2

  1. Download phantomjs-1.x.x-win32-dynamic.zip from http://code.google.com/p/phantomjs/downloads/list (Or choose the correct one from http://phantomjs.org/download.html)
  2. Unzip it and copy phantomjs.exe to sahi/ext/phantomjs folder such that you have sahi/ext/phantomjs/phantomjs.exe (for linux copy phantomjs file)
  3. Click "Configure" link on Dashboard, and, if not present, add
  4. For Windows:
    <browserType>
      <name>phantomjs</name>
      <displayName>PhantomJS</displayName>
      <icon>phantomjs.png</icon>
      <path>$sahiDir\ext\phantomjs\phantomjs.exe</path>
      <options>--proxy=localhost:9999 $sahiDir\ext\phantomjs\sahi.js</options>
      <processName>phantomjs.exe</processName>
      <capacity>100</capacity>
      <useSystemProxy>false</useSystemProxy>
    </browserType>
    For Linux
    <browserType>
      <name>phantomjs</name>
      <displayName>PhantomJS</displayName>
      <icon>phantomjs.png</icon>
      <path>$sahiDir/ext/phantomjs/phantomjs</path>
      <options>--proxy=localhost:9999 $sahiDir/ext/phantomjs/sahi.js</options>
      <processName>phantomjs</processName>
      <capacity>100</capacity>
      <useSystemProxy>false</useSystemProxy>
    </browserType>
  5. Save and restart Sahi.
  6. To run a test in PhantomJS: Click on "Bin" on the dashboard (or navigate to sahi/userdata/bin on a command prompt) and run the command
testrunner.bat demo/sahi_demo.sah http://sahi.co.in/demo/ phantomjs

This will run the Sahi script without opening a browser.

Older Documentation (before Sahi Pro V4.3.2)

  1. Download phantomjs-1.x.x-win32-dynamic.zip from http://code.google.com/p/phantomjs/downloads/list.google.com/p/phantomjs/downloads/list
  2. Unzip it to, say C:\phantomjs-1.x.x-win32 such that phantomjs.exe is available at
    C:\phantomjs-1.x.x-win32\phantomjs.exe
  3. Create a file sahi.js in C:\phantomjs-1.x.x-win32 with the content below:
  4. For version 1.2.0 onwards, use:
    if (phantom.args.length === 0) {
      console.log('Usage: sahi.js <Sahi Playback Start URL>');
      phantom.exit();
    } else {
      // var address = unescape(phantom.args[0]); // use if < v1.7
      var address = phantom.args[0];
      console.log('Loading ' + address);
      var page = new WebPage();
      page.open(address, function(status) {
        if (status === 'success') {
          var title = page.evaluate(function() {
            return document.title;
          });
          console.log('Page title is ' + title);
        } else {
          console.log('FAIL to load the address');
        }
      });
    }
    For version 1.1.0, use:
    if (phantom.state.length === 0) {
      if (phantom.args.length === 0) {
        console.log('Usage: sahi.js <Sahi Playback Start URL>');
        phantom.exit();
      } else {
        var address = unescape(phantom.args[0]);
        phantom.state = "sahi script running";
        console.log('Loading ' + address);
        phantom.open(address);
      }
    } else {
      if (phantom.loadStatus == 'success') {
        console.log('Page title is ' + document.title);
      } else {
        console.log('FAIL to load the address');
      }
    }
    The above code is based on the example provided by PhantomJS

  5. Click "Configure" link on Dashboard, and add
  6. <browserType>
      <name>phantomjs</name>
      <displayName>PhantomJS</displayName>
      <icon>phantomjs.png</icon>
      <path>C:\phantomjs-1.1.0-win32\phantomjs.exe</path>
      <options>--proxy=localhost:9999 C:\phantomjs-1.1.0-win32\sahi.js
      </options>
      <processName>phantomjs.exe</processName>
      <capacity>100</capacity>
      <force>true</force>
    </browserType>
    before the ending tag in browser_types.xml
  7. Save and restart Sahi.
  8. To run a test in PhantomJS: Click on "Bin" on the dashboard (or navigate to sahi/userdata/bin on a command prompt) and run the command
testrunner.bat demo/sahi_demo.sah http://sahi.co.in/demo/ phantomjs
This will run the Sahi script without opening a browser.