View Actions¶
After defining a View's Elements, the Actions to perform on them can be created. For example, clicking a button, or selecting an entry from a drop-down menu. If an Action will be performed on multiple Elements, for example, click
on three different Elements, a unique Action must be written to invoke each Element.
Information about how to call Actions in a Stepdef is available in Defining Stepdefs in UI Steps.
Action Chains ¶
Action chains perform a sequence of Actions separated by an arrow ->
. The final Action in an Action chain must be one of: click
, double click
, drop
, or type
. Elements used in Action chains may require a dynamic
modifier
Actions eligible to be used in Action chains are indicated in the table below.
Example
1 2 | action (input) hoverMe := hover(tutorials) -> hover(webDesign) -> hover(input) -> type |
UI Steps Actions | Can Be Used in action Chain |
---|---|
Read Actions: Attribute, Content & Selected | No |
Modifying Actions | |
Capture | No |
Check | No |
Uncheck | No |
Clear | No |
Click | Yes |
Click with Coordinates | Yes |
Double Click | Yes |
Right Click | Yes |
Drag and Drop | Yes |
Drag and Drop with Coordinates | Yes |
Hover | Yes |
Pause | Yes |
Select | No |
Submit | No |
Swipe | No |
Type | Yes |
Read Actions ¶
The attribute
, content
and selected
Actions read and return data from their addressed Elements, but do not modify any content.
Parameters
-
elemAddressed - The Element that an Action will address
-
actionName - The name assigned to the Action
-
action - The Action. May be one of
attribute
,content
orselected
- attribute - Returns an arbitrary attribute of an Element
- content - Retrieves an Element's content
- selected - Returns whether or not a checkbox or a radio button is selected
Example
1 2 3 | action (videoTv) getAttributeOfTv := attribute action (menu) getContentOfMenu := content action (yes) yesCheckbox := selected |
Modifying Actions ¶
Modifying Actions interact with the addressed Element in a way that changes their state or value.
Capture ¶
Captures an image of the Element and returns it as a file.
Syntax
1 | action (<elemAddressed Element>) <actionName Name> := capture |
Parameters
-
elemAddressed - The Element that an Action will address
-
actionName - The name assigned to the Action
Example
1 | action (companyLogo) captureCompanyLogo := capture |
Check ¶
Checks a checkbox/radio button Element.
Syntax
1 | action (<elemAddressed element>) <actionName Name> := check |
Parameters
-
elemAddressed - The Element that an Action will address
-
actionName - The name assigned to the Action
Example
1 | action (yes) yesCheckbox := check |
Uncheck ¶
Unchecks a checkbox Element.
Syntax
1 | action (<elemAddressed element>) <actionName Name> := uncheck |
Parameters
-
elemAddressed - The Element that an Action will address
-
actionName - The name assigned to the Action
Example
1 | action (yes) yesCheckbox := uncheck |
Clear ¶
Clears the input of an Element. For example, clearing a search field.
Syntax
1 | action (<elemAddressed element>) <actionName Name> := clear |
Parameters
-
elemAddressed - The Element that an Action will address
-
actionName - The name assigned to the Action
Example
1 | action (searchField) clearSearchText := clear |
Click ¶
Clicks a button. By default, the click/tap occurs at the center of the Element. To specify where the click should occur, see Click with Coordinates below.
Syntax
1 | action (<elemAddressed Element>) <actionName Name> := click |
Parameters
-
elemAddressed - The Element that an Action will address
-
actionName - The name assigned to the Action
Example
1 | action (searchButton) doSearch := click |
Click with Coordinates ¶
This variation of click
specifies optional X and Y parameters in a Stepdef. The Click/Tap occurs at a point that is offset relative to the top-left corner of the Element by X and Y.
Syntax
1 | <view Identifier>.<click Identifier>(<xOffset Number>, <yOffset Number>) |
Parameters
-
view - The View's name
-
click - The Click's name, as defined in the View
-
xOffset - The distance in pixels relative to the top left corner of the Element along the X-axis
-
yOffset - The distance in pixels relative to the top left corner of the Element along the Y-axis
Example Stepdef
1 2 3 4 | stepdef "tap at coordinates {} and {}" / x, y / v := find AppiumTestAppView v.tapText(x, y) end |
In the example above, v
is the View and tapText
is an Action defined in the View.
Example Action Definition
1 | action (textField) tapText := click |
Double Click ¶
Double-clicks on an Element.
Syntax
1 | action (<elemAddressed element>) <actionName Name> := double click |
Parameters
-
elemAddressed - The Element that an Action will address
-
actionName - The name assigned to the Action
Example
1 2 3 4 5 6 | view ExampleView elem x := "id('x')" elem y := "id('y')" action (x) doubleClickX := double click action (y) doubleClickY := hover(y) -> pause -> double click |
Right Click ¶
Performs a right click on the specified element.
Syntax
1 | action (<elemAddressed element>) <actionName Name> := right click |
Parameters
-
elemAddressed - The Element that an Action will address
-
actionName - The name assigned to the Action
Example
1 2 3 4 | view MyView elem el := "<xpath>" action (el) doRightClick := right click end |
Drag and Drop ¶
An Action chain first defines a drag
Action on an Element and a drop
Action to drop it onto another Element.
Syntax
1 | action (<elemDropped element>) <actionName Name> := drag(<elemDragged) -> pause -> drop |
Parameters
-
elemDropped - The Element that will have another Element dropped on it
-
actionName - The name assigned to the Action chain
-
elemDragged - The name assigned to the Element to be dragged and dropped
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | stepdef "open interactjs homepage" vView := open interactJS delay(2) Page.maximizeWindow() delay(2) vView.dragAndDrop() delay(2) end view interactJS url "https://interactjs.io/" elem DemoOnlyBtn := '//*[@id="basic-drag"]/label[4]' [dynamic] elem DragElem := '//*[@id="drag-1"]' [dynamic] elem ScaleElem := '//*[@id="scale-Element"]' [dynamic] action (DragElem) dragAndDrop := drag(ScaleElem) -> pause -> drop end |
In the example above, the Element ScaleElem
is dragged. A pause
Action is executed and ScaleElem
is dropped onto DragElem
.
Drag and Drop with Coordinates ¶
This variation of drag
and drop
specifies optional X and Y parameters in a Stepdef relative to the drop target's center.
Syntax
1 | <dragAndDropaction Name>(<xOffset Number>, <yOffset Number>) |
Parameters
-
dragAndDropaction - The drag and drop identifier
-
xOffset - The distance in pixels from the drop target's center along the X-axis
- Positive numbers indicate a rightward direction, while negative numbers indicate a leftward direction
-
yOffset - The distance in pixels from the drop target's center along the Y-axis
- Positive numbers indicate a downward direction, while negative numbers indicate an upward direction
Note:
The drop location can be outside of the drop target but should stay within the browser's window. If not, intaQt will throw an out of bounds of viewport
error message.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | stepdef "open interactjs homepage" vView := open interactJS //wait with timeout delay(2) Page.maximizeWindow() delay(2) vView.dragAndDrop(30,-30) delay(2) end view interactJS url "http://interactjs.io/" elem DragElem := '//*[@id="drag-1"]' [visible] elem DropBox := '//*[@id="demos"]/div[1]/div[4]' [visible] action (DropBox) dragAndDrop := drag(DragElem) -> pause -> drop end |
Hover ¶
Hovers over an Element, for example, to open a drop-down menu. hover
must be used in an Action chain that first defines the Element to be hovered over and must end with one of: click
, double click
, drag
or type
Action.
Syntax
1 | action (<elemTarget Name>) <actionName Name> := hover(<elem Name>)-> ... click |
-
elemTarget - The target ction for the final Action in the Action chain
- For example, if the final Action is
click
after navigating through a drop-down menu
- For example, if the final Action is
-
actionName - The name assigned to the Action chain
-
elem - The Element hovered over
Example
1 2 3 4 5 6 7 | view MainNavigationView elem menu1 := ".//*[contains(text(), 'Menu')]" elem menu2 := ".//*[text() = 'SubMenu1']" [dynamic] elem menu3 := ".//*[text() = 'SubMenu2]" [dynamic] action (menu3) navigateToSubmenu2 := hover(menu1)-> hover(menu2)-> click end |
Pause ¶
Pauses for 500 milliseconds and must be used in an Action chain. For example, if using the drag
and drop
Actions, a pause
can be entered between them.
Syntax
1 2 | action (<elemAddressed Name>) <actionName Name> := <action1 action> -> pause -> ... <action2 action> |
-
elemAddressed - The Element that an Action will address
-
actionName - The name assigned to the Action
-
action1 The Action that precedes the
pause
-
action2 - The Action that follows the
pause
Example
1 2 3 4 5 6 | view ExampleView elem x := "id('x')" elem y := "id('y')" action (x) dragAndDrop := drag(y) -> pause -> drop end |
Select ¶
Selects an entry from a drop-down menu.
Syntax
1 | action (<elemAddressed element>) <actionName Name> := select |
Parameters
-
elemAddressed - The Element that an Action will address
-
actionName - The name assigned to the Action
Example
1 | action (categories) selectCategory := select |
Submit ¶
Submits a form. Unlike click
, which must be used on the submit button, submit
can be performed on any form Element.
Syntax
1 | action (<elemAddressed element>) <actionName Name> := submit |
Parameters
-
elemAddressed - The Element that an Action will address
-
actionName - The name assigned to the Action
Example
1 | action (registrationForm) submitRegForm := submit |
Swipe ¶
Performs a swipe touch event, starting from a defined Element. The model that calls it must specify either:
-
An offset in pixels from the Element.
-
A swipe direction with a distance relative to the screen size.
Syntax
1 | action (<elemAddressed element>) <actionName Name> := swipe |
-
elemAddressed - The Element that an Action will address
-
actionName - The name assigned to the Action
Example
1 | action (scrollerBar) slide := swipe |
Swipe With Coordinates¶
The swipe
's pixel offsets specify the swipe distance in pixels, relative to the starting Element. It takes speed as an optional parameter.
Function Syntax
1 2 3 4 | //Without speed parameter <view Name>.<swipe Name>(<xOffset Number>, <yOffset Number>) // With speed parameter <view Name>.<swipe Name>(<xOffset Number>, <yOffset Number>, <speed String>) |
-
view - The View's name, as defined in the Stepdef
-
swipe - The swipe's name, as defined in the View
-
xOffset - The distance in pixels from the Element along the X-axis
- Positive numbers indicate a rightward direction, while negative numbers indicate a leftward direction
-
yOffset - The distance in pixels from the Element along the Y-axis
- Positive numbers indicate a downward direction, while negative numbers indicate an upward direction
-
speed - The speed assigned to the swipe
- Can be one of:
"normal"
(default) or"fast"
- Can be one of:
Example
1 2 3 4 5 6 | // swipe 500 pixels left at normal speed. formView.doSwipe(-500, 0) // swipe 500 pixels down at normal speed. formView.doSwipe(0, 500, "normal") // swipe 500 pixels right and down at fast speed. formView.doSwipe(500, 500, "fast") |
Swipe With Direction¶
The swipe with direction does not provide exact pixel distances and is suitable for cases when the accuracy of the swipe is not as important (for example, to dismiss a list item by swiping to the left or right). It takes speed and distance as optional parameters.
Syntax
1 2 3 | <view Name>.<swipe Name>(<direction String>) <view Name>.<swipe Name>(<direction String>, <distance String>) <view Name>.<swipe Name>(<direction String>, <distance Sting>, <Speed String>) |
Parameters
-
direction - The swipe's direction
- Can be one of:
"up"
"down"
"left"
or"right"
- Can be one of:
-
distance - The swipe's distance dependent on the screen's size
- Width is used when swiping to the left/right and height for up/down
- Can be one of:
"short"
swipes less than ⅓ of the width or height"medium"
(default) swipes between ⅓ and ⅔ of the width or height"long"
swipes greater than ⅔ of the width or height
- Can be one of:
- Width is used when swiping to the left/right and height for up/down
-
speed - The swipe's speed
- Can be one of:
"normal"
(default) or"fast"
- Can be one of:
Example
1 2 3 4 5 6 | // medium swipe left at normal speed. formView.doSwipe("left") // short swipe up at normal speed. formView.doSwipe("up", "short") // long swipe up at fast speed. formView.doSwipe("down", "long", "fast") |
Type ¶
Types text into a field.
Syntax
1 | action (<elemAddressed element>) <actionName Name> := type |
Parameters
-
elemAddressed - The Element that an Action will address
-
actionName - The name assigned to the Action
Example
1 | action (searchField) defineSearchText := type |