In this section:
Introduction
The Selenium Executor tool enables you to execute Selenium tests in conjunction with the various other types of tests you can run with SOAtest. It automatically sets up the dependencies required for the test by providing JUnit the necessary WebDriver libraries. This enables you to design and execute a single test scenario that orchestrates Selenium tests as part of a broader sequence of events, such as setting up a test environment or test data, running unit tests via this tool, then executing mobile tests.
Requirements
- Selenium 2.44 is supported
- JUnit 3.8.x or JUnit 4
- This tool requires SOAtest 9.8.1 or later
Installation
You can install this tool from the UI or from the command line.
UI Installation
- Choose Parasoft> Preferences from the main menu.
- Choose the Syster Properties tab and click Add JARs.
- Brows for the seleniumexecutor.jar file and click Apply.
- Restart SOAtest.
Command Line Installation
Add the seleniumexecutor.jar file to the system.properties.classpath
property in your settings.properties file. For example:
system.properties.classpath=<path to jar>/seleniumexecutor.jar
Usage
Selenium Executor tools can be added as standalone tools via the Add Test wizard. The test's class folder or jar file must contain the JUnit that you want executed. Other dependencies can be included in the jar/folder, added to the system properties, or both. The tool looks at the jar/folder first, then the system properties (if needed).
Configuration
The tool uses a system property to provide the path to the IEDriverServer.exe and chromedriver.exe shipped with SOAtest. By default, Selenium will automatically read and use this system property. Alternatively, the JUnit tests can manually override these settings using the following system properties:
- webdriver.ie.driver - path to IEDriverServer.exe
- webdriver.chrome.driver - path to chromedriver.exe
You can configure the following tool fields:
Field | Description | Required |
---|---|---|
Jar or Class Folder | Specify the test's class folder or jar file. | Required |
Class | Specify which Selenium class from the given jar or class folder to run. | Optional |
Method | Specify which Selenium method to run. Leave this empty if you want to run all test methods in the specified class. | Optional |
Data | Specify any data values you want to dynamically change in the JUnit. The field supports semicolon-separated key/value pairs, e.g.:
These variables can be accessed from within your JUnit source code using Java's System Properties object, for example:
| Optional |
Example
The following example demonstrates how to configure the tool to run all tests methods in a class:
Viewing Results
Execution details and results will be reported in the Console view. Additionally, any test failures detected will be reported in the Quality Tasks view:
Reporting Messages from JUnit Test to Console
Import the com.parasoft.api package into your project to access the Application Context, which enables SOAtest to report messages from your Selenium test execution to the console:
Application.showMessage("this displays in the console");
Add <SOATEST_INSTALL>/plugins/com.parasoft.ptest.libs.web_<version>/root/com.parasoft.api.jar to your Java project classpath to import the resource.
Retrieving Data from a JUnit Test
You can attach a SOAtest output to the Selenium Executor to retrieve data from your Selenium JUnit test output so that the data can be used in other tests. You need to configure the Selenium to indicate which values you want stored, and then attach an appropriate tool to the Selenium Output of the executor tool. The data will be passed to the attached tool in XML format. For example, you could send the data to a Diff tool, XML Assertor, or XML Data Bank tool.
Configuring the JUnit Output
Your JUnit must access the application context and store the desired values in a standard Java Map under the custom_tool_junit_output
key. The Selenium Executor tool will check the application context for the stored map and convert it to XML that gets passed to the tool's "JUnit Output" output. The map's keys and values must be strings.
Import the com.parasoft.api package into your Selenium as described in Reporting Messages from Selenium Test to Console to access the Application Context.
Sending the Data to Another Tool
To send the output data from your JUnit test to a tool that processes XML data:
- Right-click the Selenium Executor and choose Add Output.
- Choose a tool for receiving the output and click Finish.
Example
In this example, we will store the account balance in an XML Data Bank so that the values can be used in a subsequent test. The following procedure will occur:
- The JUnit test constructs a map containing the values
- The map is placed into the application context.
- The values in the map will be converted into an XML document that is passed to any tools attached to the Selenium Output
public void testParabank() throws Exception { driver = new FirefoxDriver(); // Navigate and log in to page driver.get("http://parabank.parasoft.com"); driver.findElements(By.className("input")).get(0).sendKeys("john"); driver.findElements(By.className("input")).get(1).sendKeys("demo"); driver.findElements(By.className("login")).get(2).submit(); // Extract desired value String accountBalance = driver.findElementByXPath("//*[@id=\"accountTable\"]/tbody/tr[1]/td[2]").getText(); // Create map representing name-value pairs for XML Map<String, String> map = new HashMap<String, String>(); // Place extracted value into map map.put("accountBalance", accountBalance); // Get the Parasoft Scripting Context ScriptingContext context = Application.getContext(); // Place the map in the context with the custom_tool_junit_output context.put("custom_tool_junit_output", map); }
Add a Selenium Executor tool configured to run this test and add an XML Data Bank tool to the Selenium output.
Specify which values to extract and use in other tools. The content of the map appears below the <root>
element within the XML document that is passed to the tools attached to the Selenium output. In this example, a value assertion tool was added.
Third-party Content
This plug-in includes items that have been sourced from third parties as outlined below.
- JUnit (Eclipse Public License 1.0)
Additional license details are available in this plugin's licenses folder.