Open2Test_Selenium is Keyword driven Framework - supporting Continuous Integration using Gradle and Jenkins
Open2Test framework is open source framework developed by Open source team of NTTDATA INC. This is framework developed for automation testing using Selenium. Aim of Open2Test framework is to provide easy way to approach automation testing. Keyword based solution formed on the premise that makes any application to be described using short text description or keywords.
Keywords can be defined in natural language meaning that, test cases can be written with more or less detail, depending on the project's needs.
Testers working at the business level do not require technical understanding of the test automation framework to be able to create and edit test cases
Sensitivity to changes (which can create the need for maintenance effort) is reduced. Maintenance of test cases for business reasons will not affect the implementation of the Keyword scripts, as long as the set of keywords and the semantics of the keywords are not changed.
Portability of test suites is easier to achieve, (e.g. if a similar system with almost the same business cases has to be tested then many of the keywords can be reused).
Automated functional tests can be implemented before the test item actually exists, either by sing existing keyword libraries with their corresponding automation scripts, or by defining new keywords and adding the automation scripts later as the test interface is defined.
A limited set of keywords implies a limited effort for implementing test automation, (e.g. usually, one automated keyword script for each keyword will be sufficient).
Tools/Software | Version | Verified Version | Comments |
---|---|---|---|
Eclipse | Luna or above | Luna | Editor |
Java | 1.7 Or above | 1.8.52 | O2T Framework Developed Lang |
Gradle | 3.2.1 | 3.2.1 | Build Tool |
Selenium [with all jar from Libs folder] | 2.53.1 and above | 2.53.1 and 3.1 | Automation Tool |
Apache POI jar library | 3.13 | 3.13 | For Excel interaction |
Ashot jar library | 1.5.3 | 1.5.3 | To take Screen shot in Chrome |
Junit | 4.12 | 4.12 | Annotations |
Jenkins [Jenkins is not required, in case of local configuration.] | 2.3X | 2.3X | open-source continuous integration software tool |
Jenkins Plug ins 1. Gradle Plugin 2. Subversion release manager plugins. | Supporting Plug ins for Continuous integration | ||
Subversion [SVN ] Repository | 1.6.12 | 1.6.12 | Code repository |
Open2Test | Keyword driven framework |
Download / Clone open2Test Selenium Framework of Selenium WebDriver from Git-hub.
First install Java
Set Java_Home and Path in environment variable
e.g. Java_Home = C:\Program Files\Java\jdk1.8.51
Path =; %JAVA_HOME%\bin;
Unzip Eclipse folder and launch eclipse with Eclipse exe.
Traverse to URL: https://gradle.org/gradle-download/ Then click on Complete Distribution link (Complete distribution (binaries, sources and offline documentation)) Gradle-3.2.1-all.zip file will get download. [Current version is 3.3]
In Eclipse ---> Help ---> Marketplace ---> Search and Install plug in called “Buildship Gradle Integration2.0”
Import the downloaded Open2Test Project
-
Open Eclipse
-
File menu ==> Import==> Gradle Project
-
Click on Next Welcome pan of Gradle project import wizard will get open
-
Click on Next Import Gradle Project pan/page will get open
-
Enter /browse "Project Root Directory" as path to your downloaded open2Test
Project. e.g. D:\downloaded_project\open2Test
-
Click on Next Import options pan/page will get open
-
Select radio button "Local Installation directory"
browse to downloaded Gradle zip e.g. "D:\downloaded_project\Gradle\gradle-3.2.1-all\gradle-3.2.1" -
Click on Next Button - Import preview pan will get open
Review the entered details like Root Directory , Gradle version etc.
-
Click on Finish Button
If everything goes well, Gradle project will get import with following folder structure
Please refer sample scripting from downloaded zip.
-
Change the path of variable utilityFilePath from setting.java file to SeleniumUtility file of downloaded /cloned folder. E.g.
Public String utilityFilePath= "D:\downloaded_project\open2Test\o2t\Sample script\SeleniumUtility.xlsx"; -
Change the path of Test Suite, Object repository and other variables from utility file as per local downloaded folder structure.
-
Select the appropriate browser. And make sure the browser driver is matching /compatible with selected browser. Browser driver exe given here is for Windows 32 bit. Download 64 bit from - http://www.seleniumhq.org/download/
Traverse to Root folder of the project on Command prompt.
- Use the command “gradle build” on Command prompt for executng the build . . . [Gradle Executin]
- Right Click on SeleniumWD.java file and select Run as Gradle Tests. ……[Gradle Execution]
- Right Click on SeleniumWD.java file and select Run as Junit Tests. ……[Java Execution]
This will run the sample script file available in downloaded zip folder.
User can change the script and Object repository as per project requirement and continue to use.
*[Optional in case of Local configuration]*
- Download the Jenkins from https://jenkins.io/ … Zip file will get download.*
- Download Jenkins.war https://updates.jenkins-ci.org/download/war/ *
Unzip the Jenkins folder and paste the downloaded war (“Jenkins.war”) File to Jenkins folder.
Download and configure SVN. https://subversion.apache.org/download.cgi
1. Go to workspace directory of current project.
2. Copy Project folder and past it to SVN repository.
3. Commit and update the SVN.
Traverse to Jenkins folder on command prompt Execute the command “ Java -jar jenkins.war”
Once Jenkins is fully up and running, open URL in browser http://localhost:8080 Jenkins log in screen will get displayed.
By default – Jenkins username is Admin and password can be get it from initialAdminPassword.txt file which is available in secrets folder of Jenkins Jenkins Dashboard will get open
Add Plugins : Add following plugins by traversing on Manage Jenkins ---> Manage PlugIns --->Gradle Plugin --->Subversion release manager plugins.
- Click on New Item -to create the Build
-
Select the Project Type - Free Style
-
Fill the general Tab - Enter Description
-
In Source code management - Select Subversion
-
Enter Required Details Repository URL and Credentials
-
Click on Add build step - Select Invoke Gradle script as it is Gradle project
*(Build Tab will get open with the Gradle details - No change required in this)*
-
Click on Save Button
-
Demo build page will get enable - where Build now link is visible
-
Click on Build Now link
-
Check the status on Console
Let’s understand, how Open2Test framework for selenium works
Launches the given URL
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | launchapp | https://www.google.com | Launching the Website |
In above table – These are the Excel columns with Keyword launchapp given in second {B} column
and in Object Details column [C] has the URL to launch.
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | importdata | E:\AAVmwareDemo\ | Imports the Data from the given path (Data Sheet path) |
Brief Description: Captures the screen shot for all the Perform/Storevalue/Check test steps, if indicated in the Object column
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | screencaptureoption | Perform;>>;Storevalue;Check | Captures the screen shot for all the Perform test steps,if indicated in the Object column |
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | screencaptureoption | perform |
Brief Description: Captures the screen shot for all the Perform/Storevalue/Check test steps, if indicated in the Object column
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | perform | <TextBox/ CheckBox/ RadioButton/ Button/ Link/ ComboBox/ TextArea/ Image/ Frame/ iFrame/ Table/element>; | click, altclick;enter; hover; Select; Set; Check etc. | Clicks/Hovers/Select/Set the Selected/located object |
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | perform | Button;btn_Submit | Click | Clicks on Button which locator [ID ,Xpath, etc.] is stored in OR and name is given as btn_Submit by user. |
Brief Description: Returns whether object is Visible or not. If so True, else False; Returns whether object is enabled or not. If so True, else False; Checks the Text property of the given object.checks the displayed text of the link.Validate the selected item from the combobox.Data table variables/ Environment variables can be used here for value to compare
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | Check | <TextBox/ CheckBox/ RadioButton/ Button/ Link/ ComboBox/ TextArea/ Image/ Table/ListBox/element>; | Visible:<True/False> enabled:<True/False> text: linktext: value: checked:<ON/OFF>. | Returns whether object is Visible /Enable/ or not. Compares the text, Checks the link text etc. |
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | check | Button;btn_Submit | enabled:<True/False> | Checks if btn_submit is enabled or not |
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | storevalue | <TextBox/ CheckBox/ RadioButton/ Button/ Link/ ComboBox/ TextArea/ Image/ Table/ListBox/element>; | Visible: enabled: value: linktext: | Assigns the text value / display status / object is enabled or not/ Assigns selected / Stores the linktextitem of the element to a variable |
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | storevalue | Button;btn_Submit | enabled:variable1 | It will assign the True value to variable variable1 if button is enabled else it will assign false. |
Brief Description: Executes the statements inside the loop for iterations. All the statements in the between loop ..endloop will get execute till given count.
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | loop | count | It will start iterating from this row | ||
r | endloop | It will stop iterating on this row |
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | loop | 3 | Iteration will start - and it will iterate for 3 times | ||
r | perform | Button;btn_Submit | click | Clicks the button | |
r | storevalue | Button;btn_Submit | enabled:variable1 | It will assign the True value to variable variable1 if button is enabled else it will assign false. | |
r | endloop | stops the loop |
Brief Description: Use to switch the context to the frame / parent Frame / iframe/child frame/page/paagetitle.
Once you switch the context to the frame, you will be able to access and work on the elements inside the frame.
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | context | <frame/iframe;frame object name> <browser;WebBrowser> <frame/iframe;browser;WebBrowser> <Page;pagetitle browser;WebBrowser> | page;::<frame/iframe>; page;::<frame/iframe>; page; | Use to switch the context to the frame / parent Frame / iframe/child frame/page/paagetitle |
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | context | Frame;UserDetails | enabled:Frame1 | Control will switch to the Frame1. | |
r | context | Browser;Individual Health Plans | page:Individual Health Plans | Control will switch to page of name “Individual Health Plans |
Brief Description: Upload the file. Precondition: A file upload dialog is Open If Cancel/Close action is given then closes the upload dialogue
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | upload | File path in C column of Test Script | Upload the file . Precondition: A file upload dialog is Open | ||
r | upload | File path in C column of Test Script | closeupload/ cancel upload | Close file upload dialog. Precondition: A file upload dialog is Open |
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | upload | C:\Users\076533\Desktop\OLDDESK\dcxccz.png | Upload the file | ||
r | upload | C:\Users\076533\Desktop\OLDDESK\dcxccz.png | cancelupload | Close file upload dialog |
Brief Description: It will set date in calendar control, with condition that object type is Calendar and object name should be prefixed by cal_
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | perform | calendar:cal_Calendar1 | setdate: | It will set date in calendar control |
Object type is calendar and object name will start with cal_ on which this keyword can be applicable. Column Action is having Action as Setdate which accepts date given in mm-dd-yyyy format only
Run | Keyword | ObjectDetails | Action | Action2 | Comments |
---|---|---|---|---|---|
r | perform | calendar;cal_calendar1 | setdate:dt_12-21-2017 | It will set the date as 21 Dec 2017 in selected calendar. |
Keyword-Driven Testing can be organized by using one or more layers. Typical layers are
While many implementations of Keyword-Driven Testing will comprise two or three abstraction layers, in some cases it may be necessary to structure keywords in more layers.
The topmost layer is the most abstract layer which is generally aligned with the wording of the application's users. In practice, the topmost layer is usually the domain layer. However, in some situations the domain layer may not be required, and another, more abstract layer is used (e.g. if the test cases are supposed to span several different end user domains, a Meta domain layer can be introduced).
The lowest layer is the most detailed layer. It is commonly aligned with the names of test interface elements
in practice, this layer is usually, but not always, the test interface layer (e.g. asSometimes a test interface layer
is not required, or for specific reasons, even more detailed layers may be used).
Most Keyword-Driven Test systems will have more than one layer due to factors such as having understandable
keyword test cases, maintainability and division of work relying on a multi-layer structure. If only one layer
is implemented, it will commonly be either at a low level, which affects the readability of the keyword test cases,
or at a high level, which can result in more keyword execution code.
Simple keywords, which are often used at the test interface layer (e.g. "MenuSelect" or "PressButton"), can be the connection between the test execution tool and higher level keywords at an intermediate layer or domain layer. Using only keywords at the test interface layer can be sufficient for the definition of test cases and their execution. Exclusive use of simple keywords will lead to test cases with many actions. Depending on the test item, keywords at the test interface layer could need to interact with different systems such as databases, the system registry or SOA-Messages. In a similar way, the automation framework will support access to the test interface or other interfaces on which the keyword operates (e.g. mouse, keyboard, and touch screen).
Simple keywords are sufficient to compose and execute test cases but are often insufficient to reflect functional features. Composite keywords are keywords composed from other keywords. This means that keywords can be organized in different layers (see 5.2). For composite keywords, composite parameters (e.g. a data structure) can be required. It is often useful to use business-level keywords, such as “login user“. This keyword may be composed of a sequence of lower level keywords, such as “enter username“, “enter password“ and "push login-button“. For more complex business objects, such as large forms for the preparation of contracts, a keyword like “filloutContractformPage1” can be valuable. A composite keyword is a ‘package’ containing a sequence of other keywords. The set of parameters for a composite keyword can be the union of the set of parameters of the keywords that comprise the composite keyword; sometimes however, the implementer of a composite keyword may choose to ‘hide’ one or more parameters by assigning it a literal value within the composite.
Keywords may be classified into at least two categories:
Most keywords belong to the first category, (i.e. the navigation steps) because most actions are needed to prepare the test item or perform certain actions on it which will lead to a result. Navigation steps usually are steps that do not verify and log the test result.
The result is then checked by one or more other actions i.e. the verification steps.
The verification steps are related to the result of the test case. For example, if the condition of a verification step is not met, then the test result will be set to "failed".
It may be useful to allow navigation steps to be used for verification.
Keyword-Driven Testing can be enhanced if keywords are associated with data. To allow an association with data, in many cases keywords will need to have parameters which may be fixed, or list driven. Most keywords will need to have at least one parameter to specify the object they apply to. Some will need another parameter to specify input, (e.g., true/false, a string to type, an option to select in a combo box). This input will generally depend on the type of control and the type of action.