This topic explains how to modify the user actions simulated by a web scenario. Sections include: To view and modify the action taken by a specific scenario step: You can use data sources to parameterize user actions—for instance, to have a type action iterate through a set of different values stored in an Excel spreadsheet. The element that is the source of a user action will be highlighted with a solid blue border in the scenario step’s Pre-Action Browser Contents tab. To quickly change the target of a user action, right-click the related element in the Pre-Action Browser Contents tab, then choose the appropriate Modify command. If the user action that you want to change is not associated with a specific element (for instance, a "close" or "navigate" action), you can right-click anywhere in the Pre-Action Browser Contents tab, then choose Change User Action. This opens the User Action tab, which allows you to modify the target. As you create and modify user actions for page elements, you may want to inspect the HTML to determine if you are adding actions to the appropriate elements. To see the HTML for a given element by right-click that element, then choose Inspect <Element> from the shortcut menu. You can configure most common user actions by selecting from the list of preset actions, then customizing them as needed to suit your needs. The available preset actions are described below. The configuration section for many preset user actions contains an "Element Locator" section. This section allows you to specify the element associated with the action via element properties, XPath, or script. Use XPath allows you to enter an XPath to be used as an identifier. Use Script allows you to enter a script that defines the desired user action. Use Element Properties allows you to specify properties via the following controls: Also, note that many actions allow you to configure Window Name. This allows you to specify the name of the window you would like the action to occur in. Leaving this field blank indicates that the default window will be used. With Selenium, you can specify a variety of specialized element locators by setting Element Locator to Use XPath, then setting one of the available locator prefixes to the desired value. Available prefixes are: For example, to use the CSS locator If one of the three types of JavaScript popup dialogs (alert, confirm, and prompt) opens in an action other than Accept Script Dialog, Dismiss Script Dialog, or Type into Script Dialog, then an error will be reported—unless you are using the Selenium engine and this is the last test in your scenario. If a popup dialog opens during a wait action on the Selenium engine, an error will not reported. Selenium Only This action presses the OK button on any of the three types of JavaScript popup dialogs: alert, confirm, and prompt. For a multiselect combo box, this action adds one option to the selection. This can be the first selection or an additional selection. To select multiple items, use this action multiple times. Deprecated for 9.8—not recorded with the current engine This action adds text to a prompt dialog. This action is deprecated; use Accept Script Dialog, Type into Script Dialog, and Dismiss Script Dialog instead. Configuration notes: Deprecated for 9.8—not recorded with the current engine This action validates the text in an alert dialog message. This action is deprecated; use Accept Script Dialog, Type into Script Dialog, and Dismiss Script Dialog instead. Configuration notes: Deprecated for 9.8—not recorded with the current engine This action validates the text in a confirmation dialog message. This action is deprecated; use Accept Script Dialog, Type into Script Dialog, and Dismiss Script Dialog instead. Configuration notes: Deprecated for 9.8—not recorded with the current engine This action validates the text in a prompt dialog message. This action is deprecated; use Accept Script Dialog, Type into Script Dialog, and Dismiss Script Dialog instead. Configuration notes: This action checks a check box. Deprecated for 9.8—not recorded with the current engine This action presses the Cancel button in a confirm dialog. This action is deprecated; use Accept Script Dialog, Type into Script Dialog, and Dismiss Script Dialog instead. Configuration notes: This action clicks the specified element. Configuration notes: This action closes the specified window. Selenium Only For popup dialogs (alert, confirm, and prompt), this action either presses the Cancel button (for confirm and prompt) or presses the X (for all 3 types of alert dialogs). This action double-clicks an element. This action drags one element to another location. Configuration notes: There are 4 ways to indicate how to move an element. For all of the following indicators, actions start at the element that will be dragged. All numbers are in pixels. The 4 options are Start at offset and move by delta: offsetX,offsetY|deltaX,deltaY Drag the source element starting at offsetX, offsetY from the top-left corner of the source element and moving deltaX, deltaY. Negative deltas move the element up and to the left. Selenium Only This action executes the specified JavaScript within the context of the current web page. The specified JavaScript will execute in the same frame as the element defined by the element locator. If no element is defined, the JavaScript will execute in the top-most frame. To configure this user action: Configuration notes: The locator that is specified in the Element Locator section will be passed as the first parameter to the specified function. For example, assume you have 0 or 1 arguments are expected. When clicked, the dialog should say something like "0 or 1 arguments are expected in this script. When there is one argument, the argument is the element that was specified by the element locator in this user action. Example - Hovering over elements: Enter the following code into your Execute JavaScript action: Note that this code executes an "onMouseOver" event on an element. In most cases, this will cause the hover behavior to trigger. In some cases, this is insufficient and more code will be necessary to trigger the hover. Example - Clicking hidden elements: Enter the following code into your Execute JavaScript action: Note that this code executes the click function on an element. In most cases, this will cause the click behavior to trigger. In some cases, this is insufficient and more code will be necessary to trigger the click. Targeted for Legacy This action fires a JavaScript event on a particular page element. This covers JavaScript events that are defined in the code of the page (not visible to the user). Configuration notes: This action presses the browser’s Back button. No arguments are needed. This action presses the browser’s Forward button. No arguments are needed. Targeted for Legacy These actions fires keydown, keypress, or keyup JavaScript events on an element. Configuration notes: Selenium Only This action maximizes the specified browser window. Configuration notes: Targeted for Legacy These actions fire mousedown, mouseover, or mouseup JavaScript events on an element. Configuration notes: This action navigates to the provided URL as though it was entered in the browser’s URL bar. Configuration notes: Legacy Only This action opens a new browser populated with the page at the specified start URL. Enables you to add a custom action. This action has presses the Refresh button. In a multiselect combo box, this action removes one option from the selection. This is the equivalent of shift-clicking on a selected combo box selection. To remove multiple items, use this action multiple times. Selenium Only This action scrolls the web application by the number of pixels specified for the x and y axis. Negative values indicate "scroll left" (for the x-axis) or "scroll up" (for the y-axis). Selenium Only This action scrolls the web application to the specified pixel position (x and y axes). In a single-select combo box, this action selects a single option in the combo box. If an option is already selected, this action will change the selection. Configuration notes: This action submits a form, or an element within a form, to the remote server. Configuration notes: This action types the specified text into the specified element. This action types the specified text into the specified element without any focus. This action enters text into a prompt dialog. Configuration notes: This action types specified text into the specified element. The text will be masked in the field as well as encrypted upon storage. Legacy Only This action types the specified text into the specified element without any focus. The text will be masked in the field as well as encrypted upon storage. This action unchecks/clears a checked check box. This action simulates the browser waiting the specified number of milliseconds before continuing to the next step. You can use the following special character mappings to specify special characters within Selenium-supported type actions: Number pad keys Function keys These character mappings can be used with a scripted "Text Input" value such as the following script, which will type the word "test" and then send the tab key: With SOAtest 9.9.2 and earlier, it was possible to add custom user actions that could be called from Browser Playback tools. These custom actions applied only to executing browser scenarios using the legacy engine. They could be added in two ways: by defining new functions within UserCustomizableOptions.js or in BrowserDriver.js. Parasoft generally recommend defining the custom actions in UserCustomizableOptions.js, but in some cases we suggested using BrowserDriver.js in order to support Chrome. These functions would take the form where XXX is the name of the custom user action. For example, you could have UserCustomizableOptions.js define an action such as the following: You would then reference this custom action in SOAtest by choosing an Other action and typing in Starting with SOAtest 9.9.3, adding custom actions like this is no longer supported on Firefox (due to new Firefox extension requirements). Properly migrated custom user actions are still supported for the legacy engine and for playback on Chrome or Internet Explorer. To migrate your existing custom actions: For example, the example script above changes to Note that Configuring Actions
Using Data Sources to Parameterize User Actions
For details on how to add and use data sources to parameterize tests, see Parameterizing Tests with Data Sources, Variables, or Values from Other Tests.Identifying Elements Associated with User Actions
Changing the Target of a User Action
Inspecting the HTML for Elements
Understanding Preset Actions
Common Configuration Controls
Specifying Specialized Element Locators (CSS, ALT attribute, etc.)
tag.classA
, use the XPath locator css=tag.classA
Errors for Popup Dialogs
Accept Script Dialog
Addselection
Answeronnextprompt
Assertalert
Assertconfirmation
Assertprompt
Check
Choosecancelonnextconfirmation
Click
Close
Dismiss Script Dialog
Doubleclick
Dragdrop
Execute JavaScript
function userFunction(locator) {
locator.click();
}
The element specified in the element locator would be passed to the function as the locator parameter in this script so that you can act on it as you wish.function hover(element) {
if(document.createEvent) {
var evObj = document.createEvent('MouseEvents');
evObj.initEvent('mouseover', true, false);
element.dispatchEvent(evObj);
} else if(document.createEventObject) {
element.fireEvent('onmouseover');
}
}
function click(element) {
element.click();
}
Fireevent
Go Back
Go Foward
Keydown / Keypress / Keyup
Maximize Window
Mousedown / Mouseover / Mouseup
Navigate
New Browser
Other
Refresh
Removeselection
Scroll By
Scroll To
Select
Submit
Type
Type (Without Focus) Legacy Only
Type into Script Dialog Selenium Only
Type Password
Type Password (Without Focus)
Uncheck
Wait
Special Character Mappings for Type Actions
NULL \uE000
CANCEL \uE001
HELP \uE002
BACK_SPACE \uE003
TAB \uE004
CLEAR \uE005
RETURN \uE006
ENTER \uE007
SHIFT \uE008
CONTROL \uE009
ALT \uE00A
PAUSE \uE00B
ESCAPE \uE00C
SPACE \uE00D
PAGE_UP \uE00E
PAGE_DOWN \uE00F
END \uE010
HOME \uE011
LEFT \uE012
UP \uE013
RIGHT \uE014
DOWN \uE015
INSERT \uE016
DELETE \uE017
SEMICOLON \uE018
EQUALS \uE019
NUMPAD0 \uE01A
NUMPAD1 \uE01B
NUMPAD2 \uE01C
NUMPAD3 \uE01D
NUMPAD4 \uE01E
NUMPAD5 \uE01F
NUMPAD6 \uE020
NUMPAD7 \uE021
NUMPAD8 \uE022
NUMPAD9 \uE023
MULTIPLY \uE024
ADD \uE025
SEPARATOR \uE026
SUBTRACT \uE027
DECIMAL \uE028
DIVIDE \uE029
F1 \uE031
F2 \uE032
F3 \uE033
F4 \uE034
F5 \uE035
F6 \uE036
F7 \uE037
F8 \uE038
F9 \uE039
F10 \uE03A
F11 \uE03B
F12 \uE03C
META \uE03D
ZENKAKU_HANKAKU \uE040
def typeTestThenTab() {
return "test\uE004";
}
Note that this does NOT act as a key modifier. For example, you CANNOT perform a "control-click" by sending the control character and then performing a click. Sending the character simulates a user pressing and releasing the corresponding button.Custom Actions - Migration Note
_wk_BrowserDriver.prototype.doXXX = function(locator) { ....
_wk_BrowserDriver.prototype.doContextMenu = function(locator) {
var element = this.findElement(locator);
_wk_HTMLUtil.triggerMouseEvent(element, 'contextmenu', true);
};
contextmenu
(legacy engine only)._wk_
, change them to reference com.parasoft.extension
. In other words, change _wk_XXX
to com.parasoft.extension.XXX
com.parasoft.extension.BrowserDriver.prototype.doContextMenu = function(locator) {
var element = this.findElement(locator);
com.parasoft.extension.HTMLUtil.triggerMouseEvent(element, 'contextmenu', true);
}
wk_BrowserDrive
r became com.parasoft.extension.BrowserDriver
and _wk_HTMLUtil
became com.parasoft.extension.HTMLUtil
.
Overview
Content Tools