Javascript Dialogs

Browser modal dialogs can be troublesome for automation testers. Since it is a modal, the browser does not proceed with automation unless someone acts upon these dialogs. Sahi is built for parallel playback where browsers need not be in focus. Sahi has specific mechanisms to deal with modal dialogs.

Sahi handles these dialogs by mocking them out. You will not see a dialog box when you playback via Sahi. However you will be able to control the user interaction with these dialogs with specific Sahi APIs.

Alert

An alert box looks like this: There are 3 APIs used with alerts.

Last Alert


Parameters
$allalertsboolean optional If true, returns array of all alert messages.
Return Value
stringlast alert message if $allalerts is false
array of stringsan array of all alert messages in the browser if $allalerts is true

Modes Supported :
Raw Script
//return array of all alerts in the browser.
var $allAlerts = _lastAlert(true);
//return only last alert.
var $lastAlert= _lastAlert();

Sahi Pro Classic API :_lastAlert


Expect Alert

Expect Alert tells Sahi to react with OK for a dialog with given message.
info NOTE: To log javascript popup messages in reports, value must be provided for the properties. For more details refer here.

Parameters
$messagestring message to expect in dialog. This can also be a regular expression
$persistboolean optionalif true, will accept a single _expectAlert statement for all alerts coming after the statement. If false, will accept only the next alert box to work with the _expectAlert statement. Default is false.
Return Value

Modes Supported :
Raw Script
//If Alert word expect in dialog then Sahi react with OK.
_expectAlert("/abc/",true); //Accept all alerts with "abc" message.
_expectAlert("/abc/"); //Accept only the next alert with "abc" message.

Sahi Pro Classic API :_expectAlert


Clear Last Alert

Removes the last alert from session so that further occurrence of alerts can be checked

Parameters
None
Return Value

Modes Supported :
Raw Script

Sahi Pro Classic API :_clearLastAlert


Alert Example

_expectAlert("/abc/", false); // Tell Sahi to press OK for dialog with message containing "abc"
_click(_button("Click Me")); // trigger the alert
_assertEqual("abc", _lastAlert()); // verify the alert message


Confirm

A confirm dialog looks like this: In a confirm dialog the user can either press OK or Cancel. Sahi by default clicks OK on the dialog. Sahi can also be told to press Cancel.

Last Confirm


Parameters
$allconfirmsboolean optional If true, returns array of all confirm dialog messages.
Return Value
stringlast confirm message if $allconfirms is false
array of stringsan array of all confirm messages in the browser if $allconfirms is true

Modes Supported :
Raw Script
//return array of all Confirms in the browser.
var $allConfirms = _lastConfirm(true);
//return only last Confirm.
var $lastConfirm= _lastConfirm();

Sahi Pro Classic API :_lastConfirm


Expect Confirm

Expect Confirm tells Sahi to react with OK or Cancel for a dialog with given message.
info NOTE: To log javascript popup messages in reports, value must be provided for the properties. For more details refer here.

Parameters
$messagestring message to expect in dialog. This can also be a regular expression
$valueboolean if true will press OK when a confirm dialog with given message appears. If false, will click on Cancel.
$persistboolean optionalif true, will accept a single _expectConfirm statement for all confirms coming after the statement. If false, will accept only the next confirm box to work with the _expectConfirm statement. Default is false.
Return Value

Modes Supported :
Raw Script

Sahi Pro Classic API :_expectConfirm


Clear Last Confirm

Removes the last confirm from session so that further occurrence of confirms can be checked

Parameters
None
Return Value

Modes Supported :
Raw Script

Sahi Pro Classic API :_clearLastConfirm


Confirm Example

// To click Cancel, use
_expectConfirm("/question/", false); // Tell Sahi to press Cancel for dialog with message containing "question"
_click(_button("Click For Confirm")); // Invoke the dialog
// Sahi would click cancel on it now
_assertEqual("Some question?", _lastConfirm()); // verify the actual confirm message


Prompt

A prompt box looks like this: A prompt dialog is not very commonly used. Sahi by default behaves as if OK was pressed without entering any text. Sahi can be forced to enter text by setting an expectation via _expectPrompt API. The message on the prompt box can be obtained later by _lastPrompt() API.

Last Prompt


Parameters
$allpromptsboolean optional If true, returns array of all prompt messages.
Return Value
stringlast prompt message if $allprompts is false
array of stringsan array of all prompt messages in the browser if $allprompts is true

Modes Supported :
Raw Script
//return array of all Prompts in the browser.
var $allPrompts = _lastPrompt(true);
//return only last Prompt.
var $lastPrompt= _lastPrompt();

Sahi Pro Classic API :_lastPrompt


Expect Prompt

Expect Prompt tells Sahi to respond with given response for a prompt dialog with given promptMessage.
info $persist added in 7.5.0. Scripts written before 7.5.0 do NOT need changes.
info NOTE: To log javascript popup messages in reports, value must be provided for the properties. For more details refer here.

Parameters
$promptMessagestring message to expect in dialog. This can also be a regular expression
$responsestring Response to enter into the prompt. null to behave as if Cancel was pressed.
$persistboolean optionalif true, will accept a single _expectPrompt statement for all prompts coming after the statement. If false, will accept only the next prompt box to work with the _expectPrompt statement. Default is false. Added in 7.5.0
Return Value

Modes Supported :
Raw Script

Sahi Pro Classic API :_expectPrompt


Clear Last Prompt

Removes the last prompt from session so that further occurrence of prompts can be checked

Parameters
None
Return Value

Modes Supported :
Raw Script

Sahi Pro Classic API :_clearLastPrompt


Prompt Example

_expectPrompt("/Some prom/", "abc"); // set expectation
_click(_button("Click For Prompt")); // click for prompt
// abc would be entered by Sahi in the prompt box.
_assertEqual(_lastPrompt(), "Some prompt?"); // verify the full prompt dialog message


Print dialog

Calling the print dilaog during functional test automation is not of much use. However, we can verify if window.print() was called using the following APIs

Print Called


Parameters
None
Return Value
booleantrue if window.print() was called, else false

Modes Supported :
Raw Script

Sahi Pro Classic API :_printCalled


Expect Print

Expect Print tells Sahi to react with CANCEL for a print dialog.
info NOTE: To log javascript popup messages in reports, value must be provided for the properties. For more details refer here.

Parameters
$persistboolean optionalif true, will accept a single _expectPrint statement for all prints coming after the statement. If false, will accept only the next print box to work with the _expectPrint statement. Default is false.
Return Value

Modes Supported :
Raw Script

Sahi Pro Classic API :_expectPrint


Clear Print Called

Resets _printCalled to false, so that _printCalled can be checked once more in the script.

Parameters
None
Return Value

Modes Supported :
Raw Script

Sahi Pro Classic API :_clearPrintCalled


infoYou will not see the print dialog box during playback as Sahi handles it. If you still want the print dialog to be displayed, refer the example below.
_call(_sahi.displayPrintDialog=true); // Enable displaying print dialog
_click(_submit("Print Records")); // Perform action to launch the print dialog