Latest Updates. News. Insights. Ideas.

releases Archives - Sahi Pro

Sahi Pro V5.0 – What’s New?

Posted by | releases, Sahi, Uncategorized | No Comments

Download Sahi Pro V5.0

Major Changes:

Detached Sahi Controller
The Sahi Controller is no longer tied to the same domain of the webpage that is being automated. This fixes two problems: 1) multiple controllers opening up when navigating between domains/popup windows and 2) Controller not responding to some parts of the web page

External Proxy Configuration using proxy.pac file
Many organizations use a separate proxy.pac file to configure their complex proxy rules. Sahi now can be configured to use a proxy.pac file instead of a hardcoded external proxy.

Added support to specify suites inside a suite
Suites can now be included inside other suites, allowing easier management of suites.

Script parsing done via Rhino AST parser
Sahi has moved from its previous string based parsing to Rhino’s AST parser. This allows formatting Sahi scripts in similar ways as normal Javascript files. For example, multiple actions can now be written on a single line.

Parallel browser launching enabled from java driver
Multiple browser instances can now be launched using new Browser() instances. Previously this would cause clashes in browser profiles, which has now been fixed.

_setValue bug fixed for firefox 20+
We feel stupid, but the problem was that Firefox 20 was being identified as Firefox 2 by Sahi, and hence falling back to Firefox 2’s event simulation mechanism. (Who anticipated Firefox 20 within 2 years?!) This has now been fixed.

Java 1.7 – Browser opening bug fixed
Browser launching was broken for people who moved to Java 1.7. We have fixed this now.

Proxy Configuration bug in IE10 x86 version Fixed
The proxy would be set and unset immediately on IE10 x86 version. This has now been fixed. Similar issue with Safari on Mac also is fixed.

Reporting Mechanism Optimized
The previous implementation stored execution steps in memory till the end of a script and then wrote to the database. In case of long running scripts, the memory requirements became large and if there were any OutOfMemoryErrors, the script would terminate without any logs, causing frustration and wastage. From this release, the logging is done directly to the database at each step itself, so there is no memory accumulation. Even if scripts abort in between, the logs are available till the last executed step.

Minor Changes:

Allow playback of scripts without refreshing page (“Use Start URL” checkbox added)
It has been a long time complaint from our users that Sahi refreshes the page before executing a script. We have now made this optional via a checkbox. If unchecked, the script can be set and played back without reloading the page.

Make Streaming configurable
To accommodate technologies like Comet and Server Push, we have added streaming_contenttypes.txt and streaming_urls.txt which specifically tell Sahi to stream the content without buffering.

Added Diagnose link to Dashboard
If a Sahi script waits for a long time without executing the next step, one can click on the Diagnose link on the Controller to dump the state of playback. It helps diagnose problems with Sahi indefinitely waiting for AJAX activity to subside.

Added Sahi version to Dashboard

Added feature to set java path automatically during installation of Sahi

Added setFile2 API to Sahi Java

Added Start URL in reports

New APIs added:

  • _verifyLayout: Allows verification of Page layout
  • _readLayout: Reads a simple csv like file of Sahi Elements and converts it into 2D array to be consumed by _verifyLayout
  • _includeOnce: For complex nested scripts, allows including library files only once.
  • _openWindow: Opens a new window at given resolution. Helps testing responsive layouts along with _verifyLayout
  • _windowAction: Used to perform maximize, minimize, focus, refresh, restore and close window on Windows

Download Sahi Pro V5.0

Complete Changelog

07 May 2013
Sahi Pro V5.0 released.

* Features
Parallel browser launching enabled from java driver.
Added Start URL in reports
Updated the API list for Notepad ++ plug-in.
scrollOffsets added to mouse events
Added setFile2 API to Sahi Java
Added diagnose link to Dashboard
Added Sahi version to Dashboard
Script parsing done via AST parser.
Added _windowAction API which can be used to perform maximize, minimize, focus, refresh, restore and close window
Added feature to set java path automatically during installation of Sahi.
User Agent added to initialized.htm
Added support to specify suites inside a suite.
Support provided for Microsoft SQL database.
_verifyLayout and _readLayout API created
Make Streaming configurable; added streaming_contenttypes.txt and streaming_urls.txt
_includeOnce API added
_openWindow API added
proxy selector with pac file
Allow playback of scripts without refreshing page ("Use Start URL" checkbox added)
Detached Controller implemented to allow easy recording via multiple domains/windows without opening multiple Controller windows
New playback mechanism using ping

* Bug fixes
Fixed identification of divs where each text is encapsulated by 2 divs
Fix for very slow performance of removeComments. Fixes slow loading.
Log Exception takes to the correct line number in script.
Script parsing error reporting fixed.
Fix _under in IE.
_under and _above fixed to take offsets on both sides
Mysql logging fixed
.js files fixed to be treated as single .sah file instead of .suite
HAR logging fixed
changes to terminate a load test, if the capacity is exhausted on all nodes
Fixed "Test->" assert of multiple lines from controller
Dsync fixed to copy scripts to nodes from master if master is not in list
Update of suite reports result in dload fixed
_setValue bug fixed for firefox 20
Suite report time taken format changed
fixed: reports dumped to FS
database table creation fixed
load runner fixed
Status and graph for drun fixed
drun logs for suites fixed
leftOf, RightOf fixed
domanifix with 2 parameters fixed
Fixed reports for csv based suites
test case reporting fixed
_takeScreenShot fixed
Linux certgen problem fixed

Download Sahi Pro V5.0

Sahi Pro v 4.5.2 – What’s New?

Posted by | features, releases | No Comments

This is a bug fix release

* Features
Added ability to pass extra parameters to Web based Script Runner
* Bugfixes
Fixed memory leak in distributed playback
Fixed problem with session timeout causing “Script did not complete in 150 seconds” error if page does not load within 90 seconds

Sahi Pro v 4.5.1 – What’s New?

Posted by | features, releases | No Comments

Sahi Pro V4.5.1 released.

This is a bug fix release. Please use this version instead of Sahi Pro V4.5


  • Added ability to pass extra parameters to Web based Script Runner

Bug Fixes

  • Fixed memory leak in distributed playback
  • Fixed problem with session timeout causing “Script did not complete in 150 seconds” error if page does not load within 90 seconds
  • Fixed parsing related bug which caused incompatibility with older Sahi scripts

Sahi Pro v 4.5 – What’s New?

Posted by | features, releases | 2 Comments

Sahi Pro V4.5 released.


  • _maskLogs and _unmaskLogs added to mask sensitive information in logs. More details
  • _addToSession added: Allows adding different domains to a session
  • Added up down arrows to move to parentNode in Controller.
    Parent Finder
    Clicking on the Up arrow identifies the current accessor’s parent element. Clicking the down arrow brings you back.

  • Added threads field in web based script runner.

  • Added ability to copy screen shot images into output logs folder
  • Testcase based reporting enhanced. Pass/fail counts display according to testcases. Navigation improved.
  • Evaluate Expression in flex shows more details.
  • Added logging for miscellaneous functions like _focusWindow(), _takeScreenShot etc.
  • _setFile2 added. Automatically handles js validations.
  • Fixed Java APIs
  • Selenium Java API Support (beta) added.
  • Applet Support (beta) added via _applet API More details
  • Rerouter added for dynamic domain to IP mapping

Bug Fixes

  • Fixed keypress issues in various browsers. This fixes keypress enter _keyPress(el, [13,13]) not working on some browsers.
  • Test case reports show count of testcases instead of scripts.
  • Mixing file and url scripts fixed.
  • Modal from different domain fix.
  • Double commas in SFL metadata fixed.
  • Limiting controller logs length to 100 steps to fix hang issues.
  • Fixed image path of screenshots in logs for Mac
  • handle newlines and spaces in browser_types.xml
  • Flex issues fixed. Horizontal Scroll Bar, NumericStepper, MenubarItem(only using number)
  • browser_types.xml Remove duplicate (x86) from browser path. Also expand $sahiDir.
  • Fixes _takeScreenShot on mac issue.
  • Added _setFile with 3 parameters in Sahi Java.
  • NO_LOG type handled

Sahi Pro v 4.3.2 – What’s New?

Posted by | releases | One Comment

Expand Collapse State in Logs Remembered

When moving from a script log to the script line and back, the state of expand or collapse of logs is remembered.

Controller State Remembered

The state of the Controller is remembered across sessions and even after a Sahi restart. This helps reduce a lot of time spent in setting and resetting the Controller parameters. The last URL entered in the Sahi initial screen is also saved.

New APIs Added


_closeBrowser() and _openBrowser() are used to close the browser in the middle of a script and then reopen it later. This can be useful where an application does not allow relogin unless the browser is restarted.


Sahi waits for AJAX readyStates 1,2 and 3. Some applications may have an AJAX request open at state 1 for long periods of time. Sahi should be asked to ignore readyState 1. _setXHRReadyStatesToWaitFor(“2,3”) can be called in this case. $waitStates is just a string of comma separated readyStates (“1,2,3” or “2” or “2,3” etc.).

Store Reports into MySQL Database

Sahi’s reports are stored in a file system based H2 database. For custom reporting it may be necessary to store it into a central MySQL database or another database. Sahi now supports storing reports into a MySQL database. More details Storing Reports in MySQL Database

Upgrade or Downgrade from inside Sahi Pro

To upgrade to a newer version, we have so far had to install Sahi Pro in a different folder and copy over the userdata directory. Now it is possible to directly upgrade from Sahi Pro itself. This will enable faster patch releases for critical bugs and easier maintenance of Sahi Pro.


  • Fixed bug in reporting large log files
  • Fixed _byText
  • Fixed bug in resizing Evaluate Expression box
  • Fixed IE focus issue
  • Fixed upgrade version comparison bug

Sahi Pro v 4.3 – What’s New?

Posted by | releases | No Comments

New APIs

Brings the browser window into focus. This is useful while taking screenshots or using native events.
Takes a screenshot of the entire screen and adds it to the logs.

Automatically rerun failed scripts

Sahi can create a suite of failed scripts and trigger it at the end of a suite run.
Refer to “Rerunning failed scripts automatically” section here

Trigger testcases from a web interface

We have released the first version of the web based interface for running Sahi scripts.
The web based testrunner allows us to easily trigger testcases on a remote machine running Sahi.

More details here: Web based Testrunner

Syntax highlighting on Evaluate Expression box and Script Editor

Syntax highlighting helps easily see script errors and match brackets in the Evaluate Expression box and Script Editor.

Encode proxy passwords in

Since proxy passwords can be sensitive, we have enabled simple base64 encoding for masking passwords in


You can base64 encode strings here: /demo/php/base64.php

Added missing mx and spark components in Sahi Flex Library

We added support for missing classes from the mx and spark packages

Show custom fields in suite reports

Look at Custom Fields section in Sahi Pro Reporting

Use Properties files when connecting to database

Sometimes it is necessary to pass more than just username password when making a connection to a database.
The _getDB API now can take a Properties file with extra parameters. More details: _getDB

Sahi V3.5 2011-03-14 released

Posted by | releases, Sahi | No Comments

Sahi V3.5 2011-03-14 is now available on SourceForge.

  1. We have added support for HTML5 elements, so, for example,

    is identified by Sahi as:

  2. Proxy switching on IE has become a little better
  3. _collect and _count have been added.


    [code]_assertEqual(5, _count(“_link”, “View Details”));[/code]


    [code]var $els = _collect(“_link”, “/View/”);
    var $len = $els.length;
    _assertEqual(5, $len);
    _assertEqual(“View Details”, _getText($els[0]));
  4. Ignorable ids made a user modifiable property in So if you have a new framework which generates ids in a definite pattern, you can ask Sahi to not use them as identifiers for accessors.

    Look at recorder.ignorable_ids.pattern in

  5. Checkbox simulation has fluctuated a bit in the last few builds of
    Chrome. Sahi now assumes Chrome 10+ as default. This is modifiable in


    Change to false if the checkboxes seem to toggle back to original state.

  6. Download the latest version from here: and do spread the good word. You can tweet about it, or like us on Facebook or write a blog post about it.

    Wish you happy productive testing!

Sahi V3 2010-06-10 released

Posted by | releases, Sahi | 5 Comments

Sahi V3 (2010-06-10) is now available for download.

There have been significant improvements and bug fixes in this release.

  • API _under ( /w/browser-accessor-apis ) has been added to locate elements physically under another.
  • API _byXPath has been added to help users from Selenium and other tools move to Sahi.
  • API _row and _option have been modified to be in sync with other APIs. Existing scripts may need to be modified if you use these APIs.

Below is the changelog:

10 Jun 2010

* Bugfixes
Fixed data truncation bug introduced in 30 Apr build
Fixed getText bug which returned ab on FF and a b on IE for a
Fixed for   in select option text
Fixed window.opener behaviour for link clicks
Fixed parsing error for $a == $b

* Features added
Added Shiretoko as variant of Firefox
_byXPath added.
For browsers without XPath support,
download the javascript file from
and save the contents in sahi/htdocs/spr /javascript-xpath.js
_under added as a positional relation
Lets identify elements under another element eg. _cell(0, _under(_tableHeader("Status")))
5xx errors are displayed on screen too.
Time taken by each test is displayed in logs.
XHR redirects are excluded from injection
Added Driver.setControllerMode. Takes sahi, java, ruby
_option brought in sync with other APIs.
NOTE: older _option(selElement, value) will not work any more
Replace with _option(value, _in(selElement))
_row brought in sync with other APIs.
NOTE: older _row(tablElement, rowNumber) will not work any more
Replace with _row(rowNumber, _in(tablElement))

Sahi Nightly Release 2009-07-15

Posted by | releases | No Comments

A new nightly build is available at
This fixes a file upload issue and adds support for 401 Authentication and HTTPS Client Certificates.

* Features added
Support for 401 authentication. A dialog box is shown on the browser for authentication.
Support for HTTPS client certificates. Look at ssl.client.* settings in
_hidden(identifier) added
_byClassName(className, tagName [, domRelation]) added

* Bugfixes
checkbox onchange triggered for IE.
Content-Length removed from parts of MultiPartRequest

Sahi V2 Release 2009-05-21 is now available!

Posted by | releases | No Comments

Sahi V2 2009-05-21 is a stable build. 
Please use and give feedback to make next release more stable. Download here

* Features added
    Optimizations to increase speed.
    Optimized listing of log files.
    Added better error messages for el = null errors.
    Added tests for failing features.

    Added _parentNode(el, tagName, occurrence),
    Added _parentCell(el, occurrence)
    Added _parentRow(el, occurrence)
    Added _parentTable(el, occurrence)
    Added _cell(“cellText”)
    Added _in() and modified other accessors to take inElement as parameter
    saveAs looks at Content-Disposition: attachment to download files
    Added tests around accessor identification
    Test and highlight on the Recorder tab work on selected text
    Temp files saved via “Save As” have session id prefixed to prevent overwrite.

    _rte for richtext editors based on iframe
    Reset button added to Playback. Does not refresh page.
    _scriptPath added
    _type added to type partial content without blur or onchange.
    moved to chunked encoding

    Added element.visibility_check.strict = false to This is the default now.  
    Added download.download_if_contentdisposition_is_attachment = false to 
    Set this to true to automatically download files with header Content-Disposition:attachment. 
    Causes problems with profile images.

    Stubs for Sahi’s APIs and basic objects like window and document added.
      This allows variable declarations like 
      var $ln = _link(“Form Test”); 
    Added xhr.wait_when_ready_state_3 to
      Set to false for cases if some XHRs never reach readyState 4. Needed for gmail.

* Bugfixes

    Playback to recorder tab switch when moving between multiple domains during playback fixed.
    Messages displayed multiple times during retry of step removed. Shows only once.
    Fixed NaN error in _logException and _logExceptionAsFailure.
    Fixed Content-Type related errors for state.js.
    Fixed order of response headers (SignIn Cookie problem).
    Log viewer shows file not found message and does not throw exception on console.

    Autosuggest on Controller Accessor field does not disappear to the right.
    APIs dropdown only lists public APIs of Sahi
    _imageSubmitButton indexes fixed. (Treats alt and title equivalently)
    saveAs NPE fixed

    Fixed traffic logging. It had stopped working after moving to streams.

    Divs are identified as _div instead of _spandiv
    Spans are identified as _span instead of _spandiv

Sahi V2 Nightly Unstable Build 2009-04-23 Released

Posted by | releases, Sahi | No Comments

Sahi V2 Nightly Unstable Build 2009-04-23 has been released. (Download)

This build has a few significant improvements. It now uses Rhino 1.6R2 as its Javascript engine.

NOTE that this and further builds need Java 1.5 or greater.

* API _near, similar to _in has been added. Any element can be found relative to another by using _near.

_checkbox(0, _near(_span("user name 1")))
_link("delete", _near(_span("user name 1")));

* All Sahi accessor API calls can be set to variables now.

_click(_link("click me"));

can be written now as

$ln = _link("click me");

* Check for visibility of elements is now controlled via element.visibility_check.strict property in It is set to false by default.

Sahi V2 2009-03-04 Released

Posted by | releases | No Comments

Another stable build of Sahi (/) has been released yesterday. You can get the latest build here:

This release has been a steady improvement of features from the older builds, making Sahi faster and more stable. It fixes a lot of bugs which had crept in since moving to Rhino as the engine and moving to httpurlconnection from raw sockets in the proxy.

Below is the change log:

04 March 2009
Features added
Displaying popup name in Controller.
Using -no-remote flag instead of MOZ_NO_REMOTE. Older users need to add this to ant targets.
_fail(msg) added

Added ext.http.both.proxy.bypass_hosts to to bypass some domains while
connecting through external proxy

Added _sahi.printDiagnostics to get some info about browser and XMLHttpRequest being used.

id ignored for JSF RichFaces.
Support for IE modal dialogs (invoked via showModalDialog).
_setSelected identifies options by id and index.
_listItem API added for identification of LI tags.

Fix for identifying popups from a different domain
Fixed _continueOnError
Put back no-cache headers because pages were being picked from cache in IE causing login/logouts on some sites to fail.
Fixed issues with link clicks on Chrome and Safari
Missing tests now fail the build.

Fix related to contentlength and transfer-encoding introduced in previous build.
Fix for XHRs not tagged properly (and hence wrongly handled) when different domains were present in iframes.
_readFile returns javascript string.

Handling of events registered via listeners on link clicks.
Links with numbers in text are quoted during recording. _link(“<>“).

Link click does not proceed if event.returnValue is false
Checking contentType also to figure out javascript content for XHR handling

Fixed proxying to https sites which do not have a valid certificate. (bug introduced in 21 Jan 2009 build).

One small change for users who were running multi threaded playback on Firefox: you will need to add “-no-remote” at the end of browserOption so that it now looks like this: “-profile ${basedir}/browser/ff/profiles/sahi$threadNo -no-remote

Sahi V2 20080831 Released

Posted by | releases | No Comments

After close to a month of development, Sahi V2 20080831 has been released today. (/w/)

This release uses Rhino as the scripting engine, thus moving most of the script execution to the proxy. This should go a long way in simplifying Sahi scripts. Scripts now execute on the proxy, and only stuff that needs to execute on the browser is sent to the browser. Thus scheduler functions are sent to the browser for execution. One change which has come in is that custom functions which may have been added for identification of browser elements, now need to be wrapped in a tag so that they are also sent to the browser.

This build also has some important changes to the SocketPool which will fix issues related to too many sockets being used and errors due to BindExceptions. Suite execution has been changed such that even if the browser crashes, the suite will continue with the next script and thus not hold up a build. DB methods now close connections properly.

There will still be a few rough edges and I hope users will report bugs so that they are easily fixed. Meanwhile, help spread the message through your blogs or email forums.

Sahi Nightly Build 2006-09-12 released

Posted by | releases | No Comments

A lot of features have been added in this release.

* APIS added
_expectPrompt(label, txt)
_debugToFile(s, file)
_getDB(driver, jdbcurl, username, password)

* _expectConfirm(boolean) has been changed to _expectConfirm(label, boolean);
* Fixed bug relating to invalid logs being created when there are popups
* _getDB API added for database access
* _readFile(file) added for file reading
* debug apis added for writing to a log file
* Fixed bug regarding dollar array variables. Arrays can also be used as dollar variables now
* scheduler functions work from inside _call also, without messing the execution stack

Download from here

Use fully-loaded Sahi Pro FREE for a month. Download Now Request a Demo