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
- SideeX 2 has been included in Katalon Recorder 2.0.9 to drive the advanced record-playback automation features. (2017/11/25)
- SideeX 2.3 has been released. Support playback speed control bar, hot keys, loading old IDE test case files, breakpoint toggles, and In-APP references. Code is refactored and * number of bugs are fixed. (2017/10/26)
- SideeX 2 (version 2.2.3) has been committed to the official Selenium IDE TNG repo and serves as a start point for developing the next generation of Selenium IDE. (2017/10/13)
- SideeX 2 for Chrome has been released. Install now . (2017/9/8)
- SideeX 0.8.0 has been released. 7 new automation features are added. The existing automation features are also enhanced. See the change log . (2016/12/15)
- SideeX 0.7.1 has been released. See the change log . (2016/10/22)
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
Command | Target | Value |
---|---|---|
open | A URL | X |
selectWindow | Auto-generated | X |
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 |
close | Auto-generated | X |
clickAt | A locator | x,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. |
doubleClickAt | A locator | x,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. |
mouseDownAt | A locator | x,y position of the mouse event relative to the target element. For example: "10,10" |
mouseMoveAt | A locator | x,y position of the mouse event relative to the target element. For example: "10,10" |
mouseOut | A locator | X |
mouseOver | A locator | X |
mouseUpAt | A locator | x,y position of the mouse event relative to the target element. For example: "10,10" |
dragAndDropToObject | The locator of the element to be dragged | The locator of the element on which the target element is dropped |
sendKeys | A locator | A character. For example: "${KEY_DOWN}" |
submit | A locator for the form to be submitted | X |
type | A locator | The string to be set to an input field. |
editContent | A locator | The string to be set to the content of the target element with attribute contenteditable="true" |
addSelection | A locator of a multi-select box | An option locator of the element to be added. For example: "label=Option1" |
removeSelection | A locator of a multi-select box | An option locator of the element to be removed. For example: "label=Option1" |
select | A locator of a drop-down menu | An option locator. For example: "label=Option1" |
assertAlert | The expected alert message | X |
assertConfirmation | The expected confirmation message | X |
chooseOkOnNextConfirmation | X | X |
chooseCancelOnNextConfirmation | X | X |
assertPrompt | The expected prompt message | X |
answerOnNextPrompt | The string to be set to the next prompt pop-up | X |
chooseCancelOnNextPrompt | X | X |
echo | The 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 |
pause | X | The amount of time to sleep in millisecond. For example: "5000" means sleep for 5 seconds. |
runScript | The 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 |
store | A string to store | The 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}. |
storeEval | A 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}. |
storeText | A locator | The 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}. |
storeTitle | The 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}. |
storeValue | A locator | The 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}. |
verifyText | A locator | The 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}" |
verifyTitle | The 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 |
verifyValue | A locator | The 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}" |
assertText | A locator | The 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}" |
assertTitle | The 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 |
assertValue | A locator | The 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 Key | Function |
---|---|
Ctrl + S | Save a test suite |
Ctrl + O | Open a test suite file |
Ctrl + P | Play this test case |
Ctrl + I | Insert a new command |
Ctrl + A | Select all commands |
Ctrl + X | Cut commands |
Ctrl + C | Copy commands |
Ctrl + V | Paste commands |
Del | Delete the selected commands |
Ctrl + B | Toggle 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.