Screenshot APIs
Sahi's Screenshot APIs takes the screen/browser screen-shot while running the sahi scripts.
_takeScreenShot
Since: | Sahi Pro | Desktop Add-On | Mobile Add-On | SAP Add-On | AI Assist Add-On |
4.5 | 7.0.0 | 7.5.0 | 9.0.0 | NA |
Available for modes: Browser | Windows | Java | Android | iOS | SAP
_takeScreenShot([$fileSysPath[, $noLog[, $props]]])
Arguments
$fileSysPath | string optional | file path to copy screenshot in file system.
file path to copy screenshot in file system. Relative path resolves relative to files folder of the current project. |
$noLog | boolean optional | true to prevent embedding the image in the playback log.
Default is false. |
$props | object optional | properties for image format(format) and image compression in precentage(resizePercentage)
1. format, string, optional, can be GIf, JPG or PNG Default is "sahi.takeScreenShot_image.format" property defines in config/sahi.properties, this can be overridden in userdata/config/userdata.properties 2. resizePercentage, integer, optional Default is "sahi.takeScreenShot_image.resize_percentage" property defines in config/sahi.properties, this can be override in userdata/config/userdata.properties 100 means no compression |
Returns
null |
Sahi Pro Flowcharts Action :Take Screenshot
Details
Takes a screen shot and embeds the image in the playback log.
Since Sahi works without bringing the window into focus, we first need to call
Takes a screen shot and embeds the image in the playback log.
Since Sahi works without bringing the window into focus, we first need to call
_focusWindow
to bring the window into focus.
info
Sahi currently takes the full window (desktop) screenshot, not just the browser window
info
NOTE: For Desktop Applications only
format
and resizePercentage
properties($props) are supported.
warning
You can skip executing Screenshot APIs in your script, by using _skipScreenShots API or adding
If Screenshots skipping is enabled, this API will be skipped.
_sahi.SKIP_SCREENSHOTS=true
.If Screenshots skipping is enabled, this API will be skipped.
If Screenshots skipping is enabled using Skip Screenshots action, this action will be skipped.
_focusWindow(); // bring window into focus
_takeScreenShot();
// captures screenshot in D:\dev\capture.jpg(compresses file size to 75% of the full size with jpg format)
// without embedding image in the playback log
_takeScreenShot("D:\\dev\\capture.jpg", true, {format:'jpg', resizePercentage:75});
_takeScreenShots
Since: | Sahi Pro | Desktop Add-On | Mobile Add-On | SAP Add-On | AI Assist Add-On |
5.0 | 7.0.0 | 7.5.0 | 9.0.0 | NA |
Available for modes: Browser | Windows | Java | Android | iOS | SAP
_takeScreenShots($enable[, $directory[, $noLog]])
Arguments
$enable | boolean | true for enabling screenshots, false to disable |
$directory | string optional | file path directory to copy screenshot in file system |
$noLog | boolean optional | true to prevent embedding the image in the playback log. |
Returns
null |
Sahi Pro Flowcharts Action :Take Screenshots
Details
Takes a screen shot after every step and embeds the image in the playback log.
Takes a screen shot after every step and embeds the image in the playback log.
warning
You can skip executing Screenshot APIs in your script, by using _skipScreenShots API or adding
If Screenshots skipping is enabled, this API will be skipped.
_sahi.SKIP_SCREENSHOTS=true
.If Screenshots skipping is enabled, this API will be skipped.
If Screenshots skipping is enabled using Skip Screenshots action, this action will be skipped.
_focusWindow(); // bring window into focus
// Enable screenshots
_takeScreenShots(true);
// perform actions
// screenshot will be taken after each step
// disable screenshots
_takeScreenShots(false);
// screenshots will not be taken now.
_takePageScreenShot
Since: | Sahi Pro | Desktop Add-On | Mobile Add-On | SAP Add-On | AI Assist Add-On |
6.0.0 | 8.0.0 | 8.0.0 | 9.0.0 | NA |
Available for modes: Browser | Windows | Java | Android | iOS | SAP
_takePageScreenShot([$element[, $fileSysPath[, $noLog[, $props]]]])
Arguments
$element | HTML DOM element optional | If specified, a full page screenshot of the element would be taken |
$fileSysPath | string optional | File system path to save a copy of the screenshot, additionally to. Relative paths will be resolved relative to current executing script.
File system path to save a copy of the screenshot, additionally to. Relative paths will be resolved relative to files folder of the current project.
Default is null. |
$noLog | boolean optional | Pass true to prevent embedding the image in the playback log.
Default is false. |
$props | object optional | Properties to specify for image delay, scrollLimit, trim, format and image compression in percentage(resizePercentage).
1. delay, integer, optional, time delay between scroll and screenshot in milliseconds. For long pages, the page is scrolled, individual screenshots are taken and then stitched. Sometimes images on the page may load slowly on scroll and a wait may be needed between scroll and screenshot. Default is 100 ms. 2. scrollLimit, integer, optional, height in pixels. Maximum scroll size in pixels for a page/element. Default is 200000. 3. trim, boolean, optional, Trim the image for blank space. Default is false. 4. format, string, optional, can be GIF, JPG or PNG Default is "sahi.takeScreenShot_image.format" property defined in config/sahi.properties. This can be overridden in userdata/config/userdata.properties 5. resizePercentage, integer, optional Default is "sahi.takeScreenShot_image.resize_percentage" property defined in config/sahi.properties. This can be overridden in userdata/config/userdata.properties. 100 means no compression. 6. mode, integer, optional Default is 1. Set to 2 only if element parameter is specified and element has scrollbar or element is inside a scrolled element. |
Returns
null |
Sahi Pro Flowcharts Action :Take Page Screenshot
Details
info
NOTE: API supports screenshot for elements with horizontal scrollbar also from Sahi Pro: 9.1.0..
info
NOTE: Default value of
trim
is changed to false from Sahi Pro: 9.1.0. To make previous version scripts continue as it is, change sahi.screenshot.image.trim
property to true
in userdata.properties
.
infoNOTE: Point number '6' in $props was added Since Sahi Pro: 6.2.1. For old document Refer here
info
NOTE: For Desktop Applications, only
format
and resizePercentage
properties($props) are supported, other properties($props) are not.
_focusWindow
to bring the window into focus.
warning
You can skip executing Screenshot APIs in your script, by using _skipScreenShots API or adding
If Screenshots skipping is enabled, this API will be skipped.
_sahi.SKIP_SCREENSHOTS=true
.If Screenshots skipping is enabled, this API will be skipped.
If Screenshots skipping is enabled using Skip Screenshots action, this action will be skipped.
_focusWindow(); // Brings window into focus
_takePageScreenShot(); // Captures the full browser page screenshot
_takePageScreenShot(_table("t4")); // Captures the table screenshot
// Captures table screenshot with jpg format, compresses file size to 75% of the full size, saves it to D:\dev\capture.jpg
// without embedding image in the playback log
_takePageScreenShot(_table("t4"), "D:/dev/capture.jpg", true, {format:'jpg', resizePercentage:75});
// Captures full div screenshot by scrolling to the end of the div.
// Use it in cases where a div has its own scrollbar.
_call(_div("myDIV").scrollIntoView()); // scroll the div into view first
_takePageScreenShot(_div("myDIV"), null, null, {mode:2}); // the div itself will be scrolled and screen shots taken
_skipScreenShots
Since: | Sahi Pro | Desktop Add-On | Mobile Add-On | SAP Add-On | AI Assist Add-On |
11.2.0 | 11.2.0 | 11.2.0 | 11.2.0 | NA |
Available for modes: Browser
_skipScreenShots($enable)
Arguments
$enable | boolean | True to skip screenshots, false to disable. |
Returns
null |
Sahi Pro Flowcharts Action :Skip Screenshots
Details
When enabled, Screenshot APIs namely
_takeScreenShot
, _takeScreenShots
and _takePageScreenShot
will be skipped. Capturing screenshot from Callback functions will also be skipped.
When enabled, actions namely
Take Screenshot
, Take Screenshots
and Take Page Screenshot
will be skipped. Capturing screenshot from Callback functions will also be skipped.// Skip capturing screenshots
_skipScreenShots(true);
_focusWindow();
_takeScreenShot(); // This will be skipped
// Enable capturing screenshots
_skipScreenShots(false);
// Now, screenshot APIs will not be skipped.
_skipScreenShotsComparison
Since: | Sahi Pro | Desktop Add-On | Mobile Add-On | SAP Add-On | AI Assist Add-On |
11.2.0 | 11.2.0 | 11.2.0 | 11.2.0 | NA |
Available for modes: Browser
_skipScreenShotsComparison($enable)
Arguments
$enable | boolean | True to skip comparing screenshots, false to disable. |
Returns
null |
Sahi Pro Flowcharts Action :Skip Screenshots Comparison
Details
When enabled, APIs that compare screenshots will be skipped. Thus, APIs namely
_assertSnapShot
, _assertEqualImages
and _compareImages
will be skipped.
When enabled, action
Compare Images
that compares screenshots will be skipped.// Skip comparing screenshots
_skipScreenShotsComparison(true);
_focusWindow();
_takePageScreenShot(null, "D:/dev/images/login.png")
// Below line will be skipped
var $same = _compareImages("snapshot_login_page.png", "D:/dev/images/login.png");
// Enable comparing screenshots
_skipScreenShotsComparison(false);
_assertSnapShot
Since: | Sahi Pro | Desktop Add-On | Mobile Add-On | SAP Add-On | AI Assist Add-On |
6.0.0 | 8.0.0 | 8.0.0 | 9.0.0 | NA |
Available for modes: Browser | Windows | Java | Android | iOS | SAP
_assertSnapShot($refPath[, $element[, $differenceThreshold[, $displayOnSuccess[, $props]]]])
Arguments
$refPath | string | File path of the reference image to compare the page screenshot with. Relative paths will be resolved relative to current executing script. |
$element | HTML DOM element optional | If specified, a full page screenshot of the element would be compared with the reference image. If not, a full page screenshot of the webpage would be compared with the reference image. |
$differenceThreshold | float optional | If the difference between the reference image and the page screenshot is lesser than or equal to the differenceThreshold number, they are considered same.
If not specified, a value of 20 is assumed. |
$displayOnSuccess | boolean optional | When true, the page screenshot, reference image and the differential image will be embedded in the playback log, if the assertion succeeds.
Default is false. Note that these images will always be embedded in case of assertion failure. |
$props | object optional | Properties to specify for image delay, scrollLimit, trim, format and image compression in percentage(resizePercentage).
1. delay, integer, optional, time delay between scroll and screenshot in milliseconds. For long pages, the page is scrolled, individual screenshots are taken and then stitched. Sometimes images on the page may load slowly on scroll and a wait may be needed between scroll and screenshot. Default is 100 ms. 2. scrollLimit, integer, optional, height in pixels. Maximum scroll size in pixels for a page/element. Default is 200000. 3. trim, boolean, optional, Trim the image for blank space. Default is false. 4. format, string, optional, can be GIF, JPG or PNG Default is "sahi.takeScreenShot_image.format" property defined in config/sahi.properties. This can be overridden in userdata/config/userdata.properties 5. resizePercentage, integer, optional Default is "sahi.takeScreenShot_image.resize_percentage" property defined in config/sahi.properties. This can be overridden in userdata/config/userdata.properties. 100 means no compression. 6. mode, integer, optional Default is 1. Set to 2 only if element attribute is specified and element has scrollbar. |
Returns
null |
Sahi Pro Flowcharts Action :Assert Snap Shot
Details
If the difference between the page screenshot and the reference image is lesser than or equal to the differenceThreshold, the images will be treated as same and the assertion is successful. Else the assertion is treated as a failure.
If the assertion is successful and displayOnSuccess is true, the page screenshot, reference image and the differential image will be embedded in the playback log.
If the assertion is a failure, _assertSnapShot will log failures to the playback log. The page screenshot, reference image and the differential image will be embedded in the playback log.
info
NOTE: Default value of
trim
is changed to false from Sahi Pro: 9.1.0. To make previous version scripts continue as it is, change sahi.screenshot.image.trim
property to true
in userdata.properties
.
infoNOTE: Point number '6' in $props was added Since Sahi Pro: 7.0.0. For old document Refer here
If the difference between the page screenshot and the reference image is lesser than or equal to the differenceThreshold, the images will be treated as same and the assertion is successful. Else the assertion is treated as a failure.
If the assertion is successful and displayOnSuccess is true, the page screenshot, reference image and the differential image will be embedded in the playback log.
If the assertion is a failure, _assertSnapShot will log failures to the playback log. The page screenshot, reference image and the differential image will be embedded in the playback log.
_navigateTo("http://sahi.co.in/demo/training");
_assertSnapShot("snapshot_login_page.png", _div(0), 20, true); // only _div(0) content would be compared with reference image.
// OR
_assertSnapShot("snapshot_login_page.png", null, 20, true); // passing null to compare with entire window screenshot
// OR
_assertSnapShot("snapshot_login_page.png",_div("myDIV"), 20, true, {mode:2}); // the div itself will be scrolled and screen shots taken
danger
DO NOT USE THIS IN AN IF CONDITION as it does not return any value, and throws an exception if the assertion fails
Use _compareImages instead.
infoThis API is dependent on GraphicsMagick software.
To configure the GraphicsMagick on the system, refer Configuring GraphicsMagick
warning
This API can be skipped using _skipScreenShotsComparison API or adding
_sahi.SKIP_ASSERT_SNAPSHOTS=true
._compareImages
Since: | Sahi Pro | Desktop Add-On | Mobile Add-On | SAP Add-On | AI Assist Add-On |
6.0.0 | 7.0.0 | 7.5.0 | 9.0.0 | NA |
Available for modes: Browser | Windows | Java | Android | iOS | SAP
_compareImages($f1, $f2[, $differenceThreshold])
Arguments
$f1 | string | File path of the first image. Relative paths will be resolved relative to current executing script.
File path of the first image. Relative paths will be resolved relative to files folder of the current project. |
$f2 | string | File path of the second image. Relative paths will be resolved relative to current executing script.
File path of the second image. Relative paths will be resolved relative to files folder of the current project. |
$differenceThreshold | float optional | If the difference between first and second image is lesser than or equal to the differenceThreshold number, they are considered to be same images.
Default is 20. |
Returns
boolean | true if both images are same, else false |
Sahi Pro Flowcharts Action :Compare Images
Details
Takes the path of the 2 images and checks if both images are same or not.
Takes the path of the 2 images and checks if both images are same or not.
infoThis API is dependent on GraphicsMagick software.
To configure the GraphicsMagick on the system, refer Configuring GraphicsMagick
To configure the GraphicsMagick on the system, refer Configuring GraphicsMagick
warning
This API can be skipped using _skipScreenShotsComparison API or adding
_sahi.SKIP_ASSERT_SNAPSHOTS=true
.This action can be skipped using Skip Screenshots Comparison action.
_navigateTo("http://sahi.co.in/demo/training");
_takePageScreenShot(null, "D:/dev/images/login.png")
var $same = _compareImages("snapshot_login_page.png", "D:/dev/images/login.png");
_assert($same);
Configuring GraphicsMagick
To configure GraphicsMagick, follow the following steps.Configure GM on Windows
- Download GraphicsMagick "GraphicsMagick-x.x.x-Qx-winxx-dll.exe" from GraphicsMagick windows
-
Install GraphicsMagick on your machine, say in
C:\GraphicsMagick\
-
Edit
sahi_pro\ext\imagetools\set_graphicsmagick.bat
and modify the contents to look like this:set GM=C:\GraphicsMagick\gm
infoThe QuantumDepth=8 version (Q8) which provides industry standard 24/32 bit pixels consumes half the memory and about 30% less CPU than the QuantumDepth=16 version (Q16) which provides 48/64 bit pixels for high-resolution color. Refer here
Configure GM on Linux
- Download GraphicsMagick "GraphicsMagick-x.x.xx-x.src.rpm" from GraphicsMagick linux
-
Install GraphicsMagick on your machine using apt/yum or your package manager. It would mostly install gm in
/usr/bin/
(You can find the installed path by runningwhich gm
) for more details Refer here. -
Edit
sahi_pro/ext/imagetools/set_graphicsmagick.sh
and modify the contents to look like this:export GM=/usr/bin/gm
Configure GM on Mac
- Download GraphicsMagick "GraphicsMagick-x.x.xx-x.tar.gz" from GraphicsMagick Mac
-
Install GraphicsMagick on your machine using brew install graphicsmagick or your package manager. It would mostly install gm in
/usr/bin/
(You can find the installed path by runningwhich gm
) for more details Refer here. -
Edit
sahi_pro/ext/imagetools/set_graphicsmagick.sh
and modify the contents to look like this:export GM=/usr/bin/gm
Skip Screenshots
Screenshot capturing can be skipped using _skipScreenShots API. With this, Screenshot APIs namely
_takeScreenShot
, _takeScreenShots
and _takePageScreenShot
will be skipped. Capturing screenshot from Callback functions will also be skipped.
Screenshot capturing can be skipped using Skip Screenshots action. With this, actions namely
Take Screenshot
, Take Screenshots
and Take Page Screenshot
will be skipped. Capturing screenshot from Callback functions will also be skipped.Screenshot comparison can be skipped using _skipScreenShotsComparison API. With this, APIs that compare screenshots will be skipped. Thus, APIs namely
_assertSnapShot
, _assertEqualImages
and _compareImages
will be skipped.
Screenshot comparison can be skipped using Skip Screenshots Comparison action. With this, action
Compare Images
that compares screenshots will be skipped.To skip screenshots in report on aborted, set property
reports.skip_screenshots_on_aborted
as true in userdata.properties
file.
To skip screenshots in report on healed, set property
reports.skip_screenshots_on_healed
as true in userdata.properties
file.