|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.thoughtworks.selenium.DefaultSelenium
The default implementation of the Selenium interface; end users will primarily interact with this object.
Field Summary | |
protected CommandProcessor |
commandProcessor
|
Constructor Summary | |
DefaultSelenium(CommandProcessor processor)
Uses an arbitrary CommandProcessor |
|
DefaultSelenium(java.lang.String serverHost,
int serverPort,
java.lang.String browserStartCommand,
java.lang.String browserURL)
Uses a CommandBridgeClient, specifying a server host/port, a command to launch the browser, and a starting URL for the browser. |
Method Summary | |
void |
addSelection(java.lang.String locator,
java.lang.String optionLocator)
Add a selection to the set of selected options in a multi-select element using an option locator. |
void |
answerOnNextPrompt(java.lang.String answer)
Instructs Selenium to return the specified answer string in response to the next JavaScript prompt [window.prompt()]. |
void |
check(java.lang.String locator)
Check a toggle-button (checkbox/radio) |
void |
chooseCancelOnNextConfirmation()
By default, Selenium's overridden window.confirm() function will return true, as if the user had manually clicked OK. |
void |
click(java.lang.String locator)
Clicks on a link, button, checkbox or radio button. |
void |
close()
Simulates the user clicking the "close" button in the titlebar of a popup window or tab. |
void |
fireEvent(java.lang.String locator,
java.lang.String eventName)
Explicitly simulate an event, to trigger the corresponding "onevent" handler. |
java.lang.String |
getAlert()
Retrieves the message of a JavaScript alert generated during the previous action, or fail if there were no alerts. |
java.lang.String[] |
getAllButtons()
Returns the IDs of all buttons on the page. |
java.lang.String[] |
getAllFields()
Returns the IDs of all input fields on the page. |
java.lang.String[] |
getAllLinks()
Returns the IDs of all links on the page. |
java.lang.String |
getAttribute(java.lang.String attributeLocator)
Gets the value of an element attribute. |
java.lang.String |
getBodyText()
Gets the entire text of the page. |
java.lang.String |
getConfirmation()
Retrieves the message of a JavaScript confirmation dialog generated during the previous action. |
java.lang.Number |
getCursorPosition(java.lang.String locator)
Retrieves the text cursor position in the given input element or textarea; beware, this may not work perfectly on all browsers. |
java.lang.String |
getEval(java.lang.String script)
Gets the result of evaluating the specified JavaScript snippet. |
java.lang.String |
getExpression(java.lang.String expression)
Returns the specified expression. |
java.lang.String |
getHtmlSource()
Returns the entire HTML source between the opening and closing "html" tags. |
java.lang.String |
getLocation()
Gets the absolute URL of the current page. |
java.lang.String |
getPrompt()
Retrieves the message of a JavaScript question prompt dialog generated during the previous action. |
java.lang.String |
getSelectedId(java.lang.String selectLocator)
Gets option element ID for selected option in the specified select element. |
java.lang.String[] |
getSelectedIds(java.lang.String selectLocator)
Gets all option element IDs for selected options in the specified select or multi-select element. |
java.lang.String |
getSelectedIndex(java.lang.String selectLocator)
Gets option index (option number, starting at 0) for selected option in the specified select element. |
java.lang.String[] |
getSelectedIndexes(java.lang.String selectLocator)
Gets all option indexes (option number, starting at 0) for selected options in the specified select or multi-select element. |
java.lang.String |
getSelectedLabel(java.lang.String selectLocator)
Gets option label (visible text) for selected option in the specified select element. |
java.lang.String[] |
getSelectedLabels(java.lang.String selectLocator)
Gets all option labels (visible text) for selected options in the specified select or multi-select element. |
java.lang.String |
getSelectedValue(java.lang.String selectLocator)
Gets option value (value attribute) for selected option in the specified select element. |
java.lang.String[] |
getSelectedValues(java.lang.String selectLocator)
Gets all option values (value attributes) for selected options in the specified select or multi-select element. |
java.lang.String[] |
getSelectOptions(java.lang.String selectLocator)
Gets all option labels in the specified select drop-down. |
java.lang.String |
getTable(java.lang.String tableCellAddress)
Gets the text from a cell of a table. |
java.lang.String |
getText(java.lang.String locator)
Gets the text of an element. |
java.lang.String |
getTitle()
Gets the title of the current page. |
java.lang.String |
getValue(java.lang.String locator)
Gets the (whitespace-trimmed) value of an input field (or anything else with a value parameter). |
void |
goBack()
Simulates the user clicking the "back" button on their browser. |
boolean |
isAlertPresent()
Has an alert occurred? |
boolean |
isChecked(java.lang.String locator)
Gets whether a toggle-button (checkbox/radio) is checked. |
boolean |
isConfirmationPresent()
Has confirm() been called? |
boolean |
isEditable(java.lang.String locator)
Determines whether the specified input element is editable, ie hasn't been disabled. |
boolean |
isElementPresent(java.lang.String locator)
Verifies that the specified element is somewhere on the page. |
boolean |
isPromptPresent()
Has a prompt occurred? |
boolean |
isSomethingSelected(java.lang.String selectLocator)
Determines whether some option in a drop-down menu is selected. |
boolean |
isTextPresent(java.lang.String pattern)
Verifies that the specified text pattern appears somewhere on the rendered page shown to the user. |
boolean |
isVisible(java.lang.String locator)
Determines if the specified element is visible. |
void |
keyDown(java.lang.String locator,
java.lang.String keycode)
Simulates a user pressing a key (without releasing it yet). |
void |
keyPress(java.lang.String locator,
java.lang.String keycode)
Simulates a user pressing and releasing a key. |
void |
keyUp(java.lang.String locator,
java.lang.String keycode)
Simulates a user releasing a key. |
void |
mouseDown(java.lang.String locator)
Simulates a user pressing the mouse button (without releasing it yet) on the specified element. |
void |
mouseOver(java.lang.String locator)
Simulates a user hovering a mouse over the specified element. |
void |
open(java.lang.String url)
Opens an URL in the test frame. |
void |
refresh()
Simulates the user clicking the "Refresh" button on their browser. |
void |
removeSelection(java.lang.String locator,
java.lang.String optionLocator)
Remove a selection from the set of selected options in a multi-select element using an option locator. |
void |
select(java.lang.String selectLocator,
java.lang.String optionLocator)
Select an option from a drop-down using an option locator. |
void |
selectWindow(java.lang.String windowID)
Selects a popup window; once a popup window has been selected, all commands go to that window. |
void |
setContext(java.lang.String context,
java.lang.String logLevelThreshold)
Writes a message to the status bar and adds a note to the browser-side log. |
void |
setCursorPosition(java.lang.String locator,
java.lang.String position)
Moves the text cursor to the specified position in the given input element or textarea. |
void |
setTimeout(java.lang.String timeout)
Specifies the amount of time that Selenium will wait for actions to complete. |
void |
start()
Launches the browser with a new Selenium session |
void |
stop()
Ends the test session, killing the browser |
void |
submit(java.lang.String formLocator)
Submit the specified form. |
void |
type(java.lang.String locator,
java.lang.String value)
Sets the value of an input field, as though you typed it in. |
void |
uncheck(java.lang.String locator)
Uncheck a toggle-button (checkbox/radio) |
void |
waitForCondition(java.lang.String script,
java.lang.String timeout)
Runs the specified JavaScript snippet repeatedly until it evaluates to "true". |
void |
waitForPageToLoad(java.lang.String timeout)
Waits for a new page to load. |
void |
waitForPopUp(java.lang.String windowID,
java.lang.String timeout)
Waits for a popup window to appear and load up. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected CommandProcessor commandProcessor
Constructor Detail |
public DefaultSelenium(java.lang.String serverHost, int serverPort, java.lang.String browserStartCommand, java.lang.String browserURL)
browserString may be any one of the following:
*firefox [absolute path]
- Automatically launch a new Firefox process using a custom Firefox profile.
This profile will be automatically configured to use the Selenium Server as a proxy and to have all annoying prompts
("save your password?" "forms are insecure" "make Firefox your default browser?" disabled. You may optionally specify
an absolute path to your firefox executable, or just say "*firefox". If no absolute path is specified, we'll look for
firefox.exe in a default location (normally c:\program files\mozilla firefox\firefox.exe), which you can override by
setting the Java system property firefoxDefaultPath
to the correct path to Firefox.*iexplore [absolute path]
- Automatically launch a new Internet Explorer process using custom Windows registry settings.
This process will be automatically configured to use the Selenium Server as a proxy and to have all annoying prompts
("save your password?" "forms are insecure" "make Firefox your default browser?" disabled. You may optionally specify
an absolute path to your iexplore executable, or just say "*iexplore". If no absolute path is specified, we'll look for
iexplore.exe in a default location (normally c:\program files\internet explorer\iexplore.exe), which you can override by
setting the Java system property iexploreDefaultPath
to the correct path to Internet Explorer./path/to/my/browser [other arguments]
- You may also simply specify the absolute path to your browser
executable, or use a relative path to your executable (which we'll try to find on your path). Warning: If you
specify your own custom browser, it's up to you to configure it correctly. At a minimum, you'll need to configure your
browser to use the Selenium Server as a proxy, and disable all browser-specific prompting.
serverHost
- the host name on which the Selenium Server residesserverPort
- the port on which the Selenium Server is listeningbrowserURL
- the starting URL including just a domain name. We'll start the browser pointing at the Selenium resources on this URL,
e.g. "http://www.google.com" would send the browser to "http://www.google.com/selenium-server/SeleneseRunner.html"public DefaultSelenium(CommandProcessor processor)
Method Detail |
public void start()
Selenium
start
in interface Selenium
public void stop()
Selenium
stop
in interface Selenium
public void click(java.lang.String locator)
Selenium
click
in interface Selenium
locator
- an element locatorpublic void fireEvent(java.lang.String locator, java.lang.String eventName)
Selenium
fireEvent
in interface Selenium
locator
- an element locatoreventName
- the event name, e.g. "focus" or "blur"public void keyPress(java.lang.String locator, java.lang.String keycode)
Selenium
keyPress
in interface Selenium
locator
- an element locatorkeycode
- the numeric keycode of the key to be pressed, normally the
ASCII value of that key.public void keyDown(java.lang.String locator, java.lang.String keycode)
Selenium
keyDown
in interface Selenium
locator
- an element locatorkeycode
- the numeric keycode of the key to be pressed, normally the
ASCII value of that key.public void keyUp(java.lang.String locator, java.lang.String keycode)
Selenium
keyUp
in interface Selenium
locator
- an element locatorkeycode
- the numeric keycode of the key to be released, normally the
ASCII value of that key.public void mouseOver(java.lang.String locator)
Selenium
mouseOver
in interface Selenium
locator
- an element locatorpublic void mouseDown(java.lang.String locator)
Selenium
mouseDown
in interface Selenium
locator
- an element locatorpublic void type(java.lang.String locator, java.lang.String value)
Selenium
Can also be used to set the value of combo boxes, check boxes, etc. In these cases, value should be the value of the option selected, not the visible text.
type
in interface Selenium
locator
- an element locatorvalue
- the value to typepublic void check(java.lang.String locator)
Selenium
check
in interface Selenium
locator
- an element locatorpublic void uncheck(java.lang.String locator)
Selenium
uncheck
in interface Selenium
locator
- an element locatorpublic void select(java.lang.String selectLocator, java.lang.String optionLocator)
Selenium
Option locators provide different ways of specifying options of an HTML Select element (e.g. for selecting a specific option, or for asserting that the selected option satisfies a specification). There are several forms of Select Option Locator.
If no option locator prefix is provided, the default behaviour is to match on label.
select
in interface Selenium
selectLocator
- an element locator identifying a drop-down menuoptionLocator
- an option locator (a label by default)public void addSelection(java.lang.String locator, java.lang.String optionLocator)
Selenium
addSelection
in interface Selenium
locator
- an element locator identifying a multi-select boxoptionLocator
- an option locator (a label by default)for details of option locators
public void removeSelection(java.lang.String locator, java.lang.String optionLocator)
Selenium
removeSelection
in interface Selenium
locator
- an element locator identifying a multi-select boxoptionLocator
- an option locator (a label by default)for details of option locators
public void submit(java.lang.String formLocator)
Selenium
submit
in interface Selenium
formLocator
- an element locator for the form you want to submitpublic void open(java.lang.String url)
Selenium
open
in interface Selenium
url
- the URL to open; may be relative or absolutepublic void selectWindow(java.lang.String windowID)
Selenium
selectWindow
in interface Selenium
windowID
- the JavaScript window ID of the window to selectpublic void waitForPopUp(java.lang.String windowID, java.lang.String timeout)
Selenium
waitForPopUp
in interface Selenium
windowID
- the JavaScript window ID of the window that will appeartimeout
- a timeout in milliseconds, after which the action will return with an errorpublic void chooseCancelOnNextConfirmation()
Selenium
chooseCancelOnNextConfirmation
in interface Selenium
public void answerOnNextPrompt(java.lang.String answer)
Selenium
answerOnNextPrompt
in interface Selenium
answer
- the answer to give in response to the prompt pop-uppublic void goBack()
Selenium
goBack
in interface Selenium
public void refresh()
Selenium
refresh
in interface Selenium
public void close()
Selenium
close
in interface Selenium
public boolean isAlertPresent()
Selenium
This function never throws an exception
isAlertPresent
in interface Selenium
public boolean isPromptPresent()
Selenium
This function never throws an exception
isPromptPresent
in interface Selenium
public boolean isConfirmationPresent()
Selenium
This function never throws an exception
isConfirmationPresent
in interface Selenium
public java.lang.String getAlert()
Selenium
Getting an alert has the same effect as manually clicking OK. If an alert is generated but you do not get/verify it, the next Selenium action will fail.
NOTE: under Selenium, JavaScript alerts will NOT pop up a visible alert dialog.
NOTE: Selenium does NOT support JavaScript alerts that are generated in a page's onload() event handler. In this case a visible dialog WILL be generated and Selenium will hang until someone manually clicks OK.
getAlert
in interface Selenium
public java.lang.String getConfirmation()
Selenium
By default, the confirm function will return true, having the same effect as manually clicking OK. This can be changed by prior execution of the chooseCancelOnNextConfirmation command. If an confirmation is generated but you do not get/verify it, the next Selenium action will fail.
NOTE: under Selenium, JavaScript confirmations will NOT pop up a visible dialog.
NOTE: Selenium does NOT support JavaScript confirmations that are generated in a page's onload() event handler. In this case a visible dialog WILL be generated and Selenium will hang until you manually click OK.
getConfirmation
in interface Selenium
public java.lang.String getPrompt()
Selenium
Successful handling of the prompt requires prior execution of the answerOnNextPrompt command. If a prompt is generated but you do not get/verify it, the next Selenium action will fail.
NOTE: under Selenium, JavaScript prompts will NOT pop up a visible dialog.
NOTE: Selenium does NOT support JavaScript prompts that are generated in a page's onload() event handler. In this case a visible dialog WILL be generated and Selenium will hang until someone manually clicks OK.
getPrompt
in interface Selenium
public java.lang.String getLocation()
Selenium
getLocation
in interface Selenium
public java.lang.String getTitle()
Selenium
getTitle
in interface Selenium
public java.lang.String getBodyText()
Selenium
getBodyText
in interface Selenium
public java.lang.String getValue(java.lang.String locator)
Selenium
getValue
in interface Selenium
locator
- an element locator
public java.lang.String getText(java.lang.String locator)
Selenium
getText
in interface Selenium
locator
- an element locator
public java.lang.String getEval(java.lang.String script)
Selenium
Note that, by default, the snippet will run in the context of the "selenium"
object itself, so this
will refer to the Selenium object, and window
will
refer to the top-level runner test window, not the window of your application.
If you need a reference to the window of your application, you can refer
to this.browserbot.getCurrentWindow()
and if you need to use
a locator to refer to a single element in your application page, you can
use this.page().findElement("foo")
where "foo" is your locator.
getEval
in interface Selenium
script
- the JavaScript snippet to run
public boolean isChecked(java.lang.String locator)
Selenium
isChecked
in interface Selenium
locator
- an element locator pointing to a checkbox or radio button
public java.lang.String getTable(java.lang.String tableCellAddress)
Selenium
getTable
in interface Selenium
tableCellAddress
- a cell address, e.g. "foo.1.4"
public java.lang.String[] getSelectedLabels(java.lang.String selectLocator)
Selenium
getSelectedLabels
in interface Selenium
selectLocator
- an element locator identifying a drop-down menu
public java.lang.String getSelectedLabel(java.lang.String selectLocator)
Selenium
getSelectedLabel
in interface Selenium
selectLocator
- an element locator identifying a drop-down menu
public java.lang.String[] getSelectedValues(java.lang.String selectLocator)
Selenium
getSelectedValues
in interface Selenium
selectLocator
- an element locator identifying a drop-down menu
public java.lang.String getSelectedValue(java.lang.String selectLocator)
Selenium
getSelectedValue
in interface Selenium
selectLocator
- an element locator identifying a drop-down menu
public java.lang.String[] getSelectedIndexes(java.lang.String selectLocator)
Selenium
getSelectedIndexes
in interface Selenium
selectLocator
- an element locator identifying a drop-down menu
public java.lang.String getSelectedIndex(java.lang.String selectLocator)
Selenium
getSelectedIndex
in interface Selenium
selectLocator
- an element locator identifying a drop-down menu
public java.lang.String[] getSelectedIds(java.lang.String selectLocator)
Selenium
getSelectedIds
in interface Selenium
selectLocator
- an element locator identifying a drop-down menu
public java.lang.String getSelectedId(java.lang.String selectLocator)
Selenium
getSelectedId
in interface Selenium
selectLocator
- an element locator identifying a drop-down menu
public boolean isSomethingSelected(java.lang.String selectLocator)
Selenium
isSomethingSelected
in interface Selenium
selectLocator
- an element locator identifying a drop-down menu
public java.lang.String[] getSelectOptions(java.lang.String selectLocator)
Selenium
getSelectOptions
in interface Selenium
selectLocator
- an element locator identifying a drop-down menu
public java.lang.String getAttribute(java.lang.String attributeLocator)
Selenium
getAttribute
in interface Selenium
attributeLocator
- an element locator followed by an
public boolean isTextPresent(java.lang.String pattern)
Selenium
isTextPresent
in interface Selenium
pattern
- a pattern to match with the text of the page
public boolean isElementPresent(java.lang.String locator)
Selenium
isElementPresent
in interface Selenium
locator
- an element locator
public boolean isVisible(java.lang.String locator)
Selenium
isVisible
in interface Selenium
locator
- an element locator
public boolean isEditable(java.lang.String locator)
Selenium
isEditable
in interface Selenium
locator
- an element locator
public java.lang.String[] getAllButtons()
Selenium
If a given button has no ID, it will appear as "" in this array.
getAllButtons
in interface Selenium
public java.lang.String[] getAllLinks()
Selenium
If a given link has no ID, it will appear as "" in this array.
getAllLinks
in interface Selenium
public java.lang.String[] getAllFields()
Selenium
If a given field has no ID, it will appear as "" in this array.
getAllFields
in interface Selenium
public java.lang.String getHtmlSource()
Selenium
getHtmlSource
in interface Selenium
public void setCursorPosition(java.lang.String locator, java.lang.String position)
Selenium
setCursorPosition
in interface Selenium
locator
- an element locator pointing to an input element or textareaposition
- the numerical position of the cursor in the field; position should be 0 to move the position to the beginning of the field. You can also set the cursor to -1 to move it to the end of the field.public java.lang.Number getCursorPosition(java.lang.String locator)
Selenium
Specifically, if the cursor/selection has been cleared by JavaScript, this command will tend to return the position of the last location of the cursor, even though the cursor is now gone from the page. This is filed as SEL-243.
This method will fail if the specified element isn't an input element or textarea, or there is no cursor in the element.
getCursorPosition
in interface Selenium
locator
- an element locator pointing to an input element or textarea
public void setContext(java.lang.String context, java.lang.String logLevelThreshold)
Selenium
If logLevelThreshold is specified, set the threshold for logging to that level (debug, info, warn, error).
(Note that the browser-side logs will not be sent back to the server, and are invisible to the Client Driver.)
setContext
in interface Selenium
context
- the message to be sent to the browserlogLevelThreshold
- one of "debug", "info", "warn", "error", sets the threshold for browser-side loggingpublic java.lang.String getExpression(java.lang.String expression)
Selenium
This is useful because of JavaScript preprocessing. It is used to generate commands like assertExpression and waitForExpression.
getExpression
in interface Selenium
expression
- the value to return
public void waitForCondition(java.lang.String script, java.lang.String timeout)
Selenium
Note that, by default, the snippet will be run in the runner's test window, not in the window
of your application. To get the window of your application, you can use
the JavaScript snippet selenium.browserbot.getCurrentWindow()
, and then
run your JavaScript in there
waitForCondition
in interface Selenium
script
- the JavaScript snippet to runtimeout
- a timeout in milliseconds, after which this command will return with an errorpublic void setTimeout(java.lang.String timeout)
Selenium
Actions that require waiting include "open" and the "waitFor*" actions.
The default timeout is 30 seconds.
setTimeout
in interface Selenium
timeout
- a timeout in milliseconds, after which the action will return with an errorpublic void waitForPageToLoad(java.lang.String timeout)
Selenium
You can use this command instead of the "AndWait" suffixes, "clickAndWait", "selectAndWait", "typeAndWait" etc. (which are only available in the JS API).
Selenium constantly keeps track of new pages loading, and sets a "newPageLoaded" flag when it first notices a page load. Running any other Selenium command after turns the flag to false. Hence, if you want to wait for a page to load, you must wait immediately after a Selenium command that caused a page-load.
waitForPageToLoad
in interface Selenium
timeout
- a timeout in milliseconds, after which this command will return with an error
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |