Home

Awesome

The Official Repository of SideeX 2 Web Testing Recorder

SideeX (version 2) is an extended version of the old Selenium IDE (v2.9.1.1) with a number of expanded automation capabilities, and then was adopted back by Selenium as the base for developing the new Selenium IDE.

Selenium IDE is one of the most popular record-playback-style web application testing tools. We really appreciate the effort of the Selenium Core and IDE contributors on developing the great and useful software. In this open source project, referred to as SideeX (version 2), we attempt to expand the existing Selenium IDE record-playback automation capabilities and provide a number of advanced improvements. SideeX runs as an extension for both Chrome and Firefox. It is available for free download and use.

<img src="https://i.imgur.com/NeXdvAG.png" width="600" />

Software Developed based on SideeX 2

The History of SideeX - From Selenium IDE to SideeX

See the success story of SideeX

Install SideeX 2

Download SideeX_2.3.4.zip and install it as a Chrome/Edge extension manually.

News

Features

SideeX 2 (version 2.x) was developed based on WebExtensions API and supports running on Chrome and Firefox. It preserves several key features of Selenium IDE and provides a number of advanced improvements. The preserved key features of Selenium IDE include easy-to-use user interface style and locators with target element selection. The advanced improvements are as follows:

Support Running on Chrome and Firefox: SideeX 2 runs as an extension for both Chrome and Firefox.

Support Parallel Running of Multi-SideeX on One Desktop: SideeX 2 supports running two or more SideeX instances in relation to different browser windows concurrently on one desktop for more efficiently processing test suites. For example, start three browser windows (NOT tabs) and open SideeX on each browser window's toolbar, then load and playback test suites by each SideeX with its corresponding browser window.

Support Editing and Running Multi-Test Suites in One Panel: SideeX 2 support opening, editing and running multiple test suites in one panel. The test suites can be automatically triggered and processed sequentially.

Support Saving All Selectors of Each Recorded Command: Right click on a test suite name (or Ctrl + S) and select Save Test Suite As to save a test suite. All target element selectors of each recorded command will be preserved while saving a test suite.

Auto - Generate/Play Commands for Selecting Unnamed Windows and Inner Frames: Automatically record and play commands for unnamed new popup windows and unnamed inner frames. We would suggest closing all other tabs/popup windows on the browser before starting a new recording.

Auto - Generate Commands for Closing New Popup Windows: Automatically generate close commands when the user closes new popup windows in the recording phase. The close command will be added to the command list together with the next command.

Auto-Wait for AJAX Requests Completion: Automatically force wait for the completion of all AJAX requests running in the background before playing a command. The timeout is 30 seconds. For the web page always with running AJAX requests, the extension only waits for timeout before playing the first command operated on the page for the efficiency.

Auto-Wait for Page Loading Completion: Automatically force wait for the completion of loading a page before playing a command.

Auto-Wait for DOM Change Completion: Automatically force wait for the completion of continuous DOM modifications triggered by scripts before playing a command. The timeout is 10 seconds.

Auto-Wait Until the Target Element is Found (Implicit Wait): Automatically force wait until the target element is found before playing a command (also called implicit wait). The default timeout is set to 10 seconds.

Auto - Generate Influential Mouseover and Mouseout Commands: Automatically generate the mouse over and mouse out commands that will cause element insertions.

Auto - Generate Influential Scrolling Commands: Automatically generate scrolling commands that will cause element insertions.

Auto - Generate/Play HTML5 and Non-HTML5 Drag and Drop Commands: Automatically generate and play two types of drag and drop commands. The first type is dragAndDropToObject command for HTML5 drag and drop feature. The second type is a sequence of commands of mouse down, move, and up for non-HTML5 drag and drop feature. Which type of commands should be recorded regarding a drag and drop action will be automatically determined while recording.

Auto-Generate Commands for Non-Form Submitting Triggered by Enter Key: Automatically generate sendKeys commands for submitting a query through pressing Enter key in a text field without a form. This type of submitting often occurs with custom Javascript functions or AJAX for requesting server-side pages.

Auto-Generate clickAt Commands and Auto-Trigger Mouse Down/Up Events while Playing: Automatically generate a clickAt command for the case that no click command is generated for a click action in the recording phase. In addition, mouse down/up events will also be triggered while playing a click or clickAt command. The ordering is: mouse down, click, and mouse up.

Auto-Generate/Play doubleClick and doubleClickAt Commands: Automatically record and play doubleClick and doubleClickAt commands. When playing a doubleClick command, the following events are sequentially created: click, click, and doubleclick. When playing a doubleClickAt command, the following events are sequentially created: mousedown, click, mouseup, mousedown, click, mouseup, and doubleclick.

Auto-Generate Commands for Autocomplete (Dropdown Menu) Feature: Automatically generate related commands for autocomplete (dropdown menu) feature on input elements. The extension enables correctly recording type and click commands for the selected target element. The type command implementation is overridden based on sendKeys command to make autocomplete candidates visible. In addition, it supports recording key down/up/tab commands while selecting candidates through keyboard.

Auto-Generate/Play Commands for Editing Content-Editable Elements: Automatically generate and play editContent commands for editing content-editable elements, e.g., rich text editors. After a user edits the content of a content-editable element while recording, a corresponding editContent command will be automatically generated, which is triggered by detecting the focus removal of the element. The editContent is a newly defined command in SideeX. It is not a regular command defined in the original Selenium IDE.

Commands

CommandTargetValue
openA URLX
selectWindowAuto-generatedX
selectFrame"index=0" (Select the first frame of index 0)<br>"relative=parent" (Select the parent frame)<br>"relative=top" (Select the top frame)X
closeAuto-generatedX
clickAtA locatorx,y position of the mouse event relative to the target element. For example: "10,10". The value can left blank to denote a simple click.
doubleClickAtA locatorx,y position of the mouse event relative to the target element. For example: "10,10". The value can left blank to denote a simple double click.
mouseDownAtA locatorx,y position of the mouse event relative to the target element. For example: "10,10"
mouseMoveAtA locatorx,y position of the mouse event relative to the target element. For example: "10,10"
mouseOutA locatorX
mouseOverA locatorX
mouseUpAtA locatorx,y position of the mouse event relative to the target element. For example: "10,10"
dragAndDropToObjectThe locator of the element to be draggedThe locator of the element on which the target element is dropped
sendKeysA locatorA character. For example: "${KEY_DOWN}"
submitA locator for the form to be submittedX
typeA locatorThe string to be set to an input field.
editContentA locatorThe string to be set to the content of the target element with attribute contenteditable="true"
addSelectionA locator of a multi-select boxAn option locator of the element to be added. For example: "label=Option1"
removeSelectionA locator of a multi-select boxAn option locator of the element to be removed. For example: "label=Option1"
selectA locator of a drop-down menuAn option locator. For example: "label=Option1"
assertAlertThe expected alert messageX
assertConfirmationThe expected confirmation messageX
chooseOkOnNextConfirmationXX
chooseCancelOnNextConfirmationXX
assertPromptThe expected prompt messageX
answerOnNextPromptThe string to be set to the next prompt pop-upX
chooseCancelOnNextPromptXX
echoThe string to be printed in the log console. Variable declared in the storeXXX commands can be used in the string. For example: "Hello ${var_usr}"X
pauseXThe amount of time to sleep in millisecond. For example: "5000" means sleep for 5 seconds.
runScriptThe Javascript code to be run. For example: "var a=10; var b=10; console.log(a+b);"<br>NOTE THAT: Avoid using alert(), prompt(), and confirm(). These three functions will not take effect while running. Please use console.log() to log messages instead.X
storeA string to storeThe name of the variable storing the string. For example: "var_usr".<br>To use the variable in another command's Target or Value, surround with ${ }, e.g., ${var_usr}.
storeEvalA JavaScript expression, variable, statement, or sequence of statements.<br>For example: "x=2; y=3; z = Math.max(x,y);". The statements will be evaluated to 3 that will be stored in the variable declared in this command's value, say ret.The name of the variable storing the completion value of evaluating the given code. For example: "ret".<br>To use the variable in another command's Target or Value, surround with ${ }, e.g., ${ret}.
storeTextA locatorThe name of the variable storing the text of the target element. For example: "var_ele_txt".<br>To use the variable in another command's Target or Value, surround with ${ }, e.g., ${var_ele_txt}.
storeTitleThe title to store (auto-generated)The name of the variable storing the title. For example: "var_title".<br>To use the variable in another command's Target or Value, surround with ${ }, e.g., ${var_title}.
storeValueA locatorThe name of the variable storing the value of the target element. For example: "var_ele_value"<br>To use the variable in another command's Target or Value, surround with ${ }, e.g., ${var_ele_value}.
verifyTextA locatorThe expected text of the target element (Exact matching). The next command will still be run even if the text verification fails.<br>Variable declared in the storeXXX commands can be used in the string. For example: "Hello ${var_usr}"
verifyTitleThe expected string of the title (Exact matching). The next command will still be run even if the text verification fails.<br>Variable declared in the storeXXX commands can be used in the string. For example: "Hello ${var_usr}"X
verifyValueA locatorThe expected value of the target element (Exact matching). The next command will still be run even if the text verification fails.<br>Variable declared in the storeXXX commands can be used in the value. For example: "Hello ${var_usr}"
assertTextA locatorThe expected text of the target element (Exact matching).<br>Variable declared in the storeXXX commands can be used in the string. For example: "Hello ${var_usr}"
assertTitleThe expected string of the title (Exact matching).<br>Variable declared in the storeXXX commands can be used in the string. For example: "Hello ${var_usr}"X
assertValueA locatorThe expected value of the target element (Exact matching).<br>Variable declared in the storeXXX commands can be used in the value. For example: "Hello ${var_usr}"

NOTE THAT: chooseCancelOnNextPrompt and editContent are new commands proposed by SideeX.

Hot Keys

Hot KeyFunction
Ctrl + SSave a test suite
Ctrl + OOpen a test suite file
Ctrl + PPlay this test case
Ctrl + IInsert a new command
Ctrl + ASelect all commands
Ctrl + XCut commands
Ctrl + CCopy commands
Ctrl + VPaste commands
DelDelete the selected commands
Ctrl + BToggle a breakpoint

Open Source License

SideeX is released under the Apache 2.0 License. In SideeX, part of Selenium IDE 2.9.1.1 source code is included under Apache 2.0 License.

SideeX 2 Javascript API

SideeX JavaScript API is a JS library running on a webpage for recording and playing web browsing behavior. It is the core library of SideeX 2. As opposed to acting as a browser web extension, the API can be directly embedded and used within a webpage via JavaScript.

SideeX 4

The new generation SideeX 4 (renamed to Rapi 4): https://rapi.dev

Contact Us

Contact the project lead Prof. Shin-Jie Lee via jielee@mail.ncku.edu.tw.