com.webmbt.plugin
Class HtmlUnitPlugin

java.lang.Object
  extended by com.webmbt.plugin.PluginAncestor
      extended by com.webmbt.plugin.WebPluginAncestor
          extended by com.webmbt.plugin.HtmlUnitPlugin
All Implemented Interfaces:
MScriptInterface, MScriptMethodIntf

public class HtmlUnitPlugin
extends WebPluginAncestor

Requires plugin parameters (in config). Plugin for HtmlUnit.

Author:
yxl01

Nested Class Summary
 class HtmlUnitPlugin.AlertDialogHandler
          you may check the alert message displayed on the dialog window.
 class HtmlUnitPlugin.ConfirmDialogHandler
          handles the browser Confirm Dialog.
 
Nested classes/interfaces inherited from interface com.webmbt.plugin.MScriptInterface
MScriptInterface.MSCRIPT_METHOD
 
Constructor Summary
HtmlUnitPlugin()
           
 
Method Summary
 void click(java.lang.String locator_p)
          simulate click on the element.
 void click(java.lang.String locator_p, java.lang.String shiftCtrlAlt_p)
          simulate click on the element with option of holding down shift, ctrl or alt key.
 void click(java.lang.String locator_p, java.lang.String coordX_p, java.lang.String coordY_p)
          simulate click on the element that supports coordinates, for example an image.
 void close()
          INTERNAL USE ONLY.
 boolean containsText(java.lang.String text_p)
          returns true if current page contains the text passed in.
 int count(java.lang.String locator_p)
          returns count of number of objects for the element locator passed in.
 void doubleClick(java.lang.String locator_p)
          double click on the element.
 void dragAndDrop(java.lang.String fromLocator_p, java.lang.String toLocator_p)
          drag element, move it by the movement string and then release it (drag and drop).
 java.lang.String getAlertText()
          returns the message in the alert popup dialog if present.
 java.lang.String[] getAttr(java.lang.String locator_p, java.lang.String attrName_p)
          Returns the value of HTML attribute value defined in the element.
 java.lang.String getConfirmText()
          returns the message in the confirm popup dialog if present.
 java.lang.String getCookie(java.lang.String cookieName_p)
          returns the value of the cookie.
 java.lang.String getPluginID()
          INTERNAL USE ONLY.
 java.lang.String[] getText(java.lang.String locator_p)
          Returns the text of the element.
 java.lang.String getTitle()
          returns the title of the current window/page.
 java.lang.String[] getValue(java.lang.String locator_p)
          Returns the value of the element found with the locator_p.
 void init(com.webmbt.scxml.ScxmlNode scxmlNode_p, java.lang.String[] pluginParams_p)
          performs the plugin specific initialization.
 boolean isAlertPresent()
          retusn true if the alert dialog has been displayed(triggered).
 boolean isChecked(java.lang.String locator_p)
          returns true if the locator_p is checked: radio button or checkbox only.
 boolean isConfirmPresent()
          retusn true if the confirm dialog has been displayed(triggered).
 boolean isDisabled(java.lang.String locator_p)
          returns true if any of the elements found is disabled.
 boolean isError(java.lang.Exception e_p)
          INTERNAL USE ONLY.
 boolean isPresent(java.lang.String locator_p)
          returns true if the element exists in the current page/frame/window.
 boolean isVisible(java.lang.String locator_p)
          returns true if any of the elements is visible.
 java.lang.String js(java.lang.String winLocator_p, java.lang.String javascript_p)
          executes javascript passed in on the window identified in winLocator_p.
 void mouseDown(java.lang.String locator_p)
          trigger mouse down event on element locator_p
 void mouseOver(java.lang.String locator_p)
          trigger mouse over event on the element locator_p
 void mouseUp(java.lang.String locator_p)
          trigger mouse up event on the element locator_p
 void openURL(java.lang.String url_p)
          opens the url passed in and set it to be current page.
 void refresh()
          click on the browser refresh button
 void rightClick(java.lang.String locator_p)
          rightClick on the element
 void selectFrame(java.lang.String frameName_p)
          select the named frame as the current default frame.
 void selectOption(java.lang.String locator_p, java.lang.String optionLocator_p)
          selects the option
 void selectWindow(java.lang.String windowName_p)
          select the named window as the current default window.
 void setBrowserCmd(java.lang.String browserCmd_p)
          changes the browser to be used for executing mbt.
 void setCheckBox(java.lang.String locator_p, java.lang.String checked_p)
          sets the checkbox
 void setRadioButton(java.lang.String locator_p, java.lang.String checked_p)
          sets the radio button
 void setupAlert()
          prepare system to handle alert popup.
 void setupConfirmResponse(java.lang.String bool_p)
          prepare system to handle the confirmation dialog with OK/Yes or Cancel/No.
 int sizeOf(java.lang.String locator_p)
          returns the number options in the select
 java.lang.String snapScreen(java.lang.String fileName_p)
          INTERNAL USE ONLY.
 void start()
          INTERNAL USE ONLY.
 void type(java.lang.String locator_p, java.lang.String keyString_p)
          type the string to the element if the element is an input field.
 void type(java.lang.String locator_p, java.lang.String shiftCtrlAlt_p, java.lang.String keyString_p)
          type the string to the element with the option to have shift/control/alt key pressed.
 void typeKey(java.lang.String locator_p, java.lang.String keyString_p)
          Enters a string by pressing keys which triggers key pressed event as if user is entering the string one char at a time.
 void waitForCondition(java.lang.String script_p, java.lang.String timeout_p)
          this method is not supported by HtmlUnit.
 java.lang.String waitForPageToLoad()
          INTERNAL USE ONLY.
 java.lang.String waitForPageToLoad(java.lang.String timeoutMillis_p)
          waits for the page to complete the load (just html dom).
 void webAuth(java.lang.String authType_p, java.lang.String userID_p, java.lang.String password_p, java.lang.String waitMillis_p, java.lang.String gotoURL_p)
          performs HTTP basic authentication.
 
Methods inherited from class com.webmbt.plugin.WebPluginAncestor
convertKeyString, setInitParams
 
Methods inherited from class com.webmbt.plugin.PluginAncestor
addException, getCurScript, getData, getData, getDataMgr, getDataSetRowNum, getInitParams, getMethodList, getMScriptAPI, getMScriptMethodList, getNativeMethod, getNativePluginObj, getPathVar, getScriptExecutor, getVar, initialize, isReady, next, registerVarChangeListener, replaceEscapeChar, rewind, setData, setPathVar, setReady, setVar, snapScreen, uiLocatorMap
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HtmlUnitPlugin

public HtmlUnitPlugin()
Method Detail

close

public void close()
Description copied from class: PluginAncestor
INTERNAL USE ONLY. closes the AUT, disconnect from the external resource e.g. session to Selenium server, closing watij IE object, etc.

Specified by:
close in class PluginAncestor

init

public void init(com.webmbt.scxml.ScxmlNode scxmlNode_p,
                 java.lang.String[] pluginParams_p)
          throws java.lang.Exception
Description copied from class: PluginAncestor
performs the plugin specific initialization. Decendant must implement this method.

Throws:
java.lang.Exception

snapScreen

public java.lang.String snapScreen(java.lang.String fileName_p)
                            throws java.lang.Exception
Description copied from class: PluginAncestor
INTERNAL USE ONLY. snap the current testing app browser under testing (AUT) and save the screen in png into the file passed in.

Specified by:
snapScreen in interface MScriptMethodIntf
Specified by:
snapScreen in class PluginAncestor
Throws:
java.lang.Exception

start

public void start()
           throws java.lang.Exception
Description copied from class: PluginAncestor
INTERNAL USE ONLY. This usually involves starting up AUT (app under testing).

Specified by:
start in class PluginAncestor
Throws:
java.lang.Exception

getPluginID

public java.lang.String getPluginID()
Description copied from class: PluginAncestor
INTERNAL USE ONLY. Returns the unique ID assigned to the plugin. This ID is not governed, that is each plugin can make up its own plugin id and as long as no other plugins currently registered/configured has the same ID, the id is good.

Specified by:
getPluginID in class PluginAncestor
Returns:

isError

public boolean isError(java.lang.Exception e_p)
Description copied from class: PluginAncestor
INTERNAL USE ONLY. returns true if the exception passed in is an error. returns false if the exception is an application exception and thus should not stop the MBT execution.

Specified by:
isError in class PluginAncestor
Returns:

waitForPageToLoad

public java.lang.String waitForPageToLoad()
Description copied from class: PluginAncestor
INTERNAL USE ONLY. wait until the page is completely loaded.

Specified by:
waitForPageToLoad in class PluginAncestor

click

public void click(java.lang.String locator_p)
           throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
simulate click on the element.

Example: <action code="$click('id=F1')"/>

Throws:
com.webmbt.MBTException

click

public void click(java.lang.String locator_p,
                  java.lang.String shiftCtrlAlt_p)
           throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
simulate click on the element with option of holding down shift, ctrl or alt key.

Example: <action code="$click('id=F1','S')"/>

shiftCtrlAlt_p - S for shift, C for ctrl, A for alt, for example "SA" for holding down Shift and Alt key.
Throws:
com.webmbt.MBTException

click

public void click(java.lang.String locator_p,
                  java.lang.String coordX_p,
                  java.lang.String coordY_p)
           throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
simulate click on the element that supports coordinates, for example an image.

Example: <action code="$click('id=F1','100','200')"/>

Notice that even though coordX_p and coordY_p are integer parameters, they must be enclosed by a set of single quote.

Throws:
com.webmbt.MBTException

containsText

public boolean containsText(java.lang.String text_p)
                     throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
returns true if current page contains the text passed in. The text must be static text string only.

Example: <log msg="Page contains text XXXX? $containsText('XXXX')"/>

Throws:
com.webmbt.MBTException

count

public int count(java.lang.String locator_p)
          throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
returns count of number of objects for the element locator passed in.

Example: <log msg="$found $count('name=paymentType') payment types on the screen"/>

Throws:
com.webmbt.MBTException

doubleClick

public void doubleClick(java.lang.String locator_p)
                 throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
double click on the element.

Example: <action code="$doubleClick('id=F1')"/>

Throws:
com.webmbt.MBTException

mouseDown

public void mouseDown(java.lang.String locator_p)
               throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
trigger mouse down event on element locator_p

Example: <action code="$mouseDown('id=F1')"/>

Throws:
com.webmbt.MBTException

mouseOver

public void mouseOver(java.lang.String locator_p)
               throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
trigger mouse over event on the element locator_p

Example: <action code="$mouseOver('id=F1')"/>

Throws:
com.webmbt.MBTException

mouseUp

public void mouseUp(java.lang.String locator_p)
             throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
trigger mouse up event on the element locator_p

Example: <action code="$mouseUp('id=F1')"/>

Throws:
com.webmbt.MBTException

dragAndDrop

public void dragAndDrop(java.lang.String fromLocator_p,
                        java.lang.String toLocator_p)
                 throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
drag element, move it by the movement string and then release it (drag and drop).

Example: <action code="$dragAndDrop('id=F1','100,20')"/> to drag element F1 and drop the element at location 100px to the right and 20px down from its original location.

Parameters:
fromLocator_p - element locator
toLocator_p - format x,y in pixels.
Throws:
com.webmbt.MBTException

getAttr

public java.lang.String[] getAttr(java.lang.String locator_p,
                                  java.lang.String attrName_p)
                           throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
Returns the value of HTML attribute value defined in the element.

Example: <log msg="Field attribute: $getAttr('id=F1','class')."/>

Each type of HTML element has a set of attributes but it also allows user defined attributes. For example "table" element has these attributes "id", "name", "width", "height", "class", etc. These are standard attributes to define a table in HTML. You may add any user attributes like "customerNumber", "orderNumber", "firstName", etc. These user defined attributes are also accessible by getAttr().

Throws:
com.webmbt.MBTException
See Also:
http://www.w3schools.com/tags/default.asp

getText

public java.lang.String[] getText(java.lang.String locator_p)
                           throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
Returns the text of the element. If multiple elements found, return a String with all text strung together separated by semicolon.

Example: <log msg="$getText('id=rowTitle')"/>

Throws:
com.webmbt.MBTException

getTitle

public java.lang.String getTitle()
                          throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
returns the title of the current window/page.

Example: <log msg="Page title is: $getTitle()"/>

Throws:
com.webmbt.MBTException

getValue

public java.lang.String[] getValue(java.lang.String locator_p)
                            throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
Returns the value of the element found with the locator_p. If multiple elements found, return a String with all values strung together separated by semicolon. If element does not have value attribute, it returns the text. If element still does not have text attribute, it returns blank.

Example: <log msg="userid is: $getValue('userid')"/>

Returns:
Throws:
com.webmbt.MBTException

isChecked

public boolean isChecked(java.lang.String locator_p)
                  throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
returns true if the locator_p is checked: radio button or checkbox only.

Example: <log msg="The checkbox F1 checked? $isChecked('id=F1')"/>

Parameters:
locator_p - locator to the checkbox
Throws:
com.webmbt.MBTException

isDisabled

public boolean isDisabled(java.lang.String locator_p)
                   throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
returns true if any of the elements found is disabled.

Example: <log msg="Field F1 disabled?: $isDisabled('id=F1')."/>

Throws:
com.webmbt.MBTException

isPresent

public boolean isPresent(java.lang.String locator_p)
                  throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
returns true if the element exists in the current page/frame/window.

Example:

<if val1="$isPresent('checkbox1')" op="eq" val2="true"/>

  <log msg="checkbox1 is present on this page">

</if>

Throws:
com.webmbt.MBTException

isVisible

public boolean isVisible(java.lang.String locator_p)
                  throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
returns true if any of the elements is visible.

Example: <log msg="Field F1 visible?: $isVisible('id=F1')."/>

Throws:
com.webmbt.MBTException

refresh

public void refresh()
             throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
click on the browser refresh button

Example: <action code="$refresh()"/>

Throws:
com.webmbt.MBTException

rightClick

public void rightClick(java.lang.String locator_p)
                throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
rightClick on the element

Example: <action code="$rightClick('id=F1')"/>

Throws:
com.webmbt.MBTException

selectWindow

public void selectWindow(java.lang.String windowName_p)
                  throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
select the named window as the current default window.

Example: <action code="$selectWindow('mainWin')"/>

Parameters:
windowName_p - name of the window
Throws:
com.webmbt.MBTException

selectFrame

public void selectFrame(java.lang.String frameName_p)
                 throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
select the named frame as the current default frame.

Example: <action code="$selectFrame('frame1')"/>

Parameters:
frameName_p - name of the frame
Throws:
com.webmbt.MBTException

selectOption

public void selectOption(java.lang.String locator_p,
                         java.lang.String optionLocator_p)
                  throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
selects the option

Example: <action code="$selectOption('id=selectF1','value=2')"/>

Parameters:
locator_p - locator for the element
optionLocator_p - locator for the option to be selected.
  • label=labelPattern: matches options based on their labels, i.e. the visible text. (This is the default.)

    For example, label=regexp:^[Oo]ther

  • value=valuePattern: matches options based on their values.

    For example, value=other

  • id=id: matches options based on their ids.

    id=option1

  • index=index: matches an option based on its index (offset from zero).

    index=2

Throws:
com.webmbt.MBTException

setCheckBox

public void setCheckBox(java.lang.String locator_p,
                        java.lang.String checked_p)
                 throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
sets the checkbox

Example: <action code="$setCheckBox('id=F1','true')"/>

Parameters:
locator_p - locator to the checkbox element
checked_p - true or false
Throws:
com.webmbt.MBTException

setRadioButton

public void setRadioButton(java.lang.String locator_p,
                           java.lang.String checked_p)
                    throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
sets the radio button

Example: <action code="$setRadioButton('id=F1','true')"/>

Parameters:
locator_p - locator to the radiobutton element
checked_p - true or false
Throws:
com.webmbt.MBTException

type

public void type(java.lang.String locator_p,
                 java.lang.String keyString_p)
          throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
type the string to the element if the element is an input field.

Example: <action code="$type('id=F1','abc')"/>

Throws:
com.webmbt.MBTException

type

public void type(java.lang.String locator_p,
                 java.lang.String shiftCtrlAlt_p,
                 java.lang.String keyString_p)
          throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
type the string to the element with the option to have shift/control/alt key pressed.

Example: <action code="$type('id=F1','S','abc')"/>

shiftCtrlAlt_p - include char "c" for control key, "a" for alt key and "s" for shift key. For example "cs" to have control and shift keys pressed.
Throws:
com.webmbt.MBTException

typeKey

public void typeKey(java.lang.String locator_p,
                    java.lang.String keyString_p)
             throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
Enters a string by pressing keys which triggers key pressed event as if user is entering the string one char at a time.

Example: $typeKey('id=textField1', 'john')

Throws:
com.webmbt.MBTException

waitForCondition

public void waitForCondition(java.lang.String script_p,
                             java.lang.String timeout_p)
this method is not supported by HtmlUnit. It is set to do nothing and return. Alternatively, you can use js('win','js script') method to achieve the similar result.


waitForPageToLoad

public java.lang.String waitForPageToLoad(java.lang.String timeoutMillis_p)
                                   throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
waits for the page to complete the load (just html dom). Times out if the page load is not completed within the timeMillis_p. This does not include the dynamic content created by javascript or ajax. You may need to use system method sleep(millis) instead to wait for the dynamic content to be fully created and initialized by ajax and other javascript packages.

Throws:
com.webmbt.MBTException

getCookie

public java.lang.String getCookie(java.lang.String cookieName_p)
Description copied from interface: MScriptMethodIntf
returns the value of the cookie.


sizeOf

public int sizeOf(java.lang.String locator_p)
           throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
returns the number options in the select

Throws:
com.webmbt.MBTException

setupConfirmResponse

public void setupConfirmResponse(java.lang.String bool_p)
                          throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
prepare system to handle the confirmation dialog with OK/Yes or Cancel/No. Call this function before the confirmation dialog opens up. It clears previous confirm dialog message if any. isConfirmPresent() must be called right after the action script which causes the confirm to show up. optionally you may call getConfirmText() after the isConfirmPresent() call.

Throws:
com.webmbt.MBTException

setupAlert

public void setupAlert()
                throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
prepare system to handle alert popup. Call this function before the alert dialog opens up. It clears previous alert message if any. isAlertPresent() must be called right after the action script which causes the alert to show up. optionally you may call getAlertText() after the isAlertPresent() call.

Throws:
com.webmbt.MBTException

getAlertText

public java.lang.String getAlertText()
                              throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
returns the message in the alert popup dialog if present. null if not.

Returns:
Throws:
com.webmbt.MBTException

getConfirmText

public java.lang.String getConfirmText()
                                throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
returns the message in the confirm popup dialog if present. null if not.

Returns:
Throws:
com.webmbt.MBTException

isAlertPresent

public boolean isAlertPresent()
Description copied from interface: MScriptMethodIntf
retusn true if the alert dialog has been displayed(triggered).

Returns:

isConfirmPresent

public boolean isConfirmPresent()
Description copied from interface: MScriptMethodIntf
retusn true if the confirm dialog has been displayed(triggered). isConfirmPresent() must be called immediately after the action that trigger the confirm popup. optionally you can call getConfirmText().

Returns:

js

public java.lang.String js(java.lang.String winLocator_p,
                           java.lang.String javascript_p)
                    throws com.webmbt.MBTException
Description copied from interface: MScriptMethodIntf
executes javascript passed in on the window identified in winLocator_p.

Parameters:
winLocator_p - locator for the window where the javascript will be executed on. win=windowName. Null or blank to run on current (top) window.

For Selenium, by default the js will be executed on the Selenium object that wraps around the user window. To execute the js on the AUT window, add prefix/qualifier window. to the js function name or js object.

Returns:
blank (Selenium) or javascrpt return (HtmlUnit).
Throws:
com.webmbt.MBTException

openURL

public void openURL(java.lang.String url_p)
             throws java.lang.Exception
Description copied from class: WebPluginAncestor
opens the url passed in and set it to be current page.

Specified by:
openURL in class WebPluginAncestor
Throws:
java.lang.Exception

setBrowserCmd

public void setBrowserCmd(java.lang.String browserCmd_p)
changes the browser to be used for executing mbt. Should only be called in MBT_start trigger.

You may use a dataset to store a list of browser start cmds and randomly retrieve one to set for each virtual users to simulate multiple users using different browsers.

For example, you can use $nextDataSetRow(java.lang.String dataSetID_p, java.lang.String floatIdx_p), $rand(), and $getData('ds','field') to retrieve different browser "cmd" from a file/spreadsheet to achieve testing with virtual users with each running different browser, like
<action code="$nextDataSetRow('myDS', '$rand()')"/>
<action code="$setBrowserCmd('$getData('myDS', 'myField')')"/>

Specified by:
setBrowserCmd in class WebPluginAncestor
Parameters:
browserCmd_p - iexplore_6, iexplore_7, iexplore_8, firefox_2, firefox_3

webAuth

public void webAuth(java.lang.String authType_p,
                    java.lang.String userID_p,
                    java.lang.String password_p,
                    java.lang.String waitMillis_p,
                    java.lang.String gotoURL_p)
             throws java.lang.Exception
Description copied from interface: MScriptMethodIntf
performs HTTP basic authentication.

Parameters:
authType_p - "HttpBasicAuth", more authentication types may be added in the future.
userID_p - user id/name
password_p - password
waitMillis_p - number of milliseconds to wait for the authentication to execute
gotoURL_p - AUT url
Throws:
java.lang.Exception


Copyright © 2008. All Rights Reserved.