com.thoughtworks.selenium.Selenium Maven / Gradle / Ivy
// Licensed to the Software Freedom Conservancy (SFC) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The SFC licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package com.thoughtworks.selenium;
/**
* Defines an object that runs Selenium commands.
*
* Element Locators
*
* Element Locators tell Selenium which HTML element a command refers to. The format of a locator
* is:
*
* locatorType=argument
*
* We support the following strategies for locating elements:
*
*
* - identifier=id: Select the element with the specified @id attribute.
* If no match is found, select the first element whose @name attribute is id. (This is
* normally the default; see below.)
* - id=id: Select the element with the specified @id attribute.
* - name=name: Select the first element with the specified @name
* attribute.
*
* - username
* - name=username
*
*
* The name may optionally be followed by one or more element-filters, separated from the
* name by whitespace. If the filterType is not specified, value is
* assumed.
*
*
* - name=flavour value=chocolate
*
*
* - dom=javascriptExpression:
*
* Find an element by evaluating the specified string. This allows you to traverse the HTML Document
* Object Model using JavaScript. Note that you must not return a value in this string; simply make
* it the last expression in the block.
*
* - dom=document.forms['myForm'].myDropdown
* - dom=document.images[56]
* - dom=function foo() { return document.links[1]; }; foo();
*
*
* - xpath=xpathExpression: Locate an element using an XPath expression.
*
* - xpath=//img[@alt='The image alt text']
* - xpath=//table[@id='table1']//tr[4]/td[2]
* - xpath=//a[contains(@href,'#id1')]
* - xpath=//a[contains(@href,'#id1')]/@class
* - xpath=(//table[@class='stylee'])//th[text()='theHeaderText']/../td
* - xpath=//input[@name='name2' and @value='yes']
* - xpath=//*[text()="right"]
*
*
* - link=textPattern: Select the link (anchor) element which contains
* text matching the specified pattern.
*
* - link=The link text
*
*
* - css=cssSelectorSyntax: Select the element using css selectors.
* Please refer to CSS2 selectors, CSS3 selectors for more
* information. You can also check the TestCssLocators test in the selenium test suite for an
* example of usage, which is included in the downloaded selenium core package.
*
* - css=a[href="#id3"]
* - css=span#firstChild + span
*
*
* Currently the css selector locator supports all css1, css2 and css3 selectors except namespace in
* css3, some pseudo classes(:nth-of-type, :nth-last-of-type, :first-of-type, :last-of-type,
* :only-of-type, :visited, :hover, :active, :focus, :indeterminate) and pseudo
* elements(::first-line, ::first-letter, ::selection, ::before, ::after).
*
*
* - ui=uiSpecifierString: Locate an element by resolving the UI
* specifier string to another locator, and evaluating it. See the Selenium UI-Element Reference for more details.
*
* - ui=loginPages::loginButton()
* - ui=settingsPages::toggle(label=Hide Email)
* - ui=forumPages::postBody(index=2)//a[2]
*
*
*
*
* Without an explicit locator prefix, Selenium uses the following default strategies:
*
*
* - dom, for locators starting with "document."
* - xpath, for locators starting with "//"
* - identifier, otherwise
*
* Element Filters
*
* Element filters can be used with a locator to refine a list of candidate elements. They are
* currently used only in the 'name' element-locator.
*
*
* Filters look much like locators, ie.
*
* filterType=argument
*
* Supported element-filters are:
*
*
* value=valuePattern
*
* Matches elements based on their values. This is particularly useful for refining a
* list of similarly-named toggle-buttons.
*
* index=index
*
* Selects a single element based on its position in the list (offset from
* zero).
String-match Patterns
*
* Various Pattern syntaxes are available for matching string values:
*
*
* - glob:pattern: Match a string against a "glob" (aka "wildmat")
* pattern. "Glob" is a kind of limited regular-expression syntax typically used in command-line
* shells. In a glob pattern, "*" represents any sequence of characters, and "?" represents any
* single character. Glob patterns match against the entire string.
* - regexp:regexp: Match a string using a regular-expression. The full
* power of JavaScript regular-expressions is available.
* - regexpi:regexpi: Match a string using a case-insensitive
* regular-expression.
* - exact:string:
*
* Match a string exactly, verbatim, without any of that fancy wildcard stuff.
*
*
* If no pattern prefix is specified, Selenium assumes that it's a "glob" pattern.
*
*
* For commands that return multiple values (such as verifySelectOptions), the string being matched
* is a comma-separated list of the return values, where both commas and backslashes in the values
* are backslash-escaped. When providing a pattern, the optional matching syntax (i.e. glob, regexp,
* etc.) is specified once, as usual, at the beginning of the pattern.
*
* @deprecated The RC interface will be removed in Selenium 3.0. Please migrate to using WebDriver.
*/
@Deprecated
public interface Selenium {
/** Sets the per-session extension Javascript
* @param extensionJs javascript extension
*/
void setExtensionJs(String extensionJs);
/** Launches the browser with a new Selenium session */
void start();
/** Starts a new Selenium testing session with a String, representing a configuration
* @param optionsString option string
*/
void start(String optionsString);
/** Starts a new Selenium testing session with a configuration options object
* @param optionsObject options object
*/
void start(Object optionsObject);
/** Ends the test session, killing the browser */
void stop();
/**
* Shows in the RemoteRunner a banner for the current test The banner is 'classname : methodname'
* where those two are derived from the caller The method name will be unCamelCased with the
* insertion of spaces at word boundaries
*/
void showContextualBanner();
/**
* Shows in the RemoteRunner a banner for the current test The banner is 'classname : methodname'
* The method name will be unCamelCased with the insertion of spaces at word boundaries
*
* @param className class name
* @param methodName method name
*/
void showContextualBanner(String className, String methodName);
/**
* Clicks on a link, button, checkbox or radio button. If the click action causes a new page to
* load (like a link usually does), call waitForPageToLoad.
*
* @param locator an element locator
*/
void click(String locator);
/**
* Double clicks on a link, button, checkbox or radio button. If the double click action causes a
* new page to load (like a link usually does), call waitForPageToLoad.
*
* @param locator an element locator
*/
void doubleClick(String locator);
/**
* Simulates opening the context menu for the specified element (as might happen if the user
* "right-clicked" on the element).
*
* @param locator an element locator
*/
void contextMenu(String locator);
/**
* Clicks on a link, button, checkbox or radio button. If the click action causes a new page to
* load (like a link usually does), call waitForPageToLoad.
*
* @param locator an element locator
* @param coordString specifies the x,y position (i.e. - 10,20) of the mouse event relative to the
* element returned by the locator.
*/
void clickAt(String locator, String coordString);
/**
* Doubleclicks on a link, button, checkbox or radio button. If the action causes a new page to
* load (like a link usually does), call waitForPageToLoad.
*
* @param locator an element locator
* @param coordString specifies the x,y position (i.e. - 10,20) of the mouse event relative to the
* element returned by the locator.
*/
void doubleClickAt(String locator, String coordString);
/**
* Simulates opening the context menu for the specified element (as might happen if the user
* "right-clicked" on the element).
*
* @param locator an element locator
* @param coordString specifies the x,y position (i.e. - 10,20) of the mouse event relative to the
* element returned by the locator.
*/
void contextMenuAt(String locator, String coordString);
/**
* Explicitly simulate an event, to trigger the corresponding "onevent" handler.
*
* @param locator an element locator
* @param eventName the event name, e.g. "focus" or "blur"
*/
void fireEvent(String locator, String eventName);
/**
* Move the focus to the specified element; for example, if the element is an input field, move
* the cursor to that field.
*
* @param locator an element locator
*/
void focus(String locator);
/**
* Simulates a user pressing and releasing a key.
*
* @param locator an element locator
* @param keySequence Either be a string(
* "\" followed by the numeric keycode of the key to be pressed, normally the ASCII value of that key), or a single character. For example: "
* w", "\119".
*/
void keyPress(String locator, String keySequence);
/** Press the shift key and hold it down until doShiftUp() is called or a new page is loaded. */
void shiftKeyDown();
/** Release the shift key. */
void shiftKeyUp();
/** Press the meta key and hold it down until doMetaUp() is called or a new page is loaded. */
void metaKeyDown();
/** Release the meta key. */
void metaKeyUp();
/** Press the alt key and hold it down until doAltUp() is called or a new page is loaded. */
void altKeyDown();
/** Release the alt key. */
void altKeyUp();
/** Press the control key and hold it down until doControlUp() is called or a new page is loaded. */
void controlKeyDown();
/** Release the control key. */
void controlKeyUp();
/**
* Simulates a user pressing a key (without releasing it yet).
*
* @param locator an element locator
* @param keySequence Either be a string(
* "\" followed by the numeric keycode of the key to be pressed, normally the ASCII value of that key), or a single character. For example: "
* w", "\119".
*/
void keyDown(String locator, String keySequence);
/**
* Simulates a user releasing a key.
*
* @param locator an element locator
* @param keySequence Either be a string(
* "\" followed by the numeric keycode of the key to be pressed, normally the ASCII value of that key), or a single character. For example: "
* w", "\119".
*/
void keyUp(String locator, String keySequence);
/**
* Simulates a user hovering a mouse over the specified element.
*
* @param locator an element locator
*/
void mouseOver(String locator);
/**
* Simulates a user moving the mouse pointer away from the specified element.
*
* @param locator an element locator
*/
void mouseOut(String locator);
/**
* Simulates a user pressing the left mouse button (without releasing it yet) on the specified
* element.
*
* @param locator an element locator
*/
void mouseDown(String locator);
/**
* Simulates a user pressing the right mouse button (without releasing it yet) on the specified
* element.
*
* @param locator an element locator
*/
void mouseDownRight(String locator);
/**
* Simulates a user pressing the left mouse button (without releasing it yet) at the specified
* location.
*
* @param locator an element locator
* @param coordString specifies the x,y position (i.e. - 10,20) of the mouse event relative to the
* element returned by the locator.
*/
void mouseDownAt(String locator, String coordString);
/**
* Simulates a user pressing the right mouse button (without releasing it yet) at the specified
* location.
*
* @param locator an element locator
* @param coordString specifies the x,y position (i.e. - 10,20) of the mouse event relative to the
* element returned by the locator.
*/
void mouseDownRightAt(String locator, String coordString);
/**
* Simulates the event that occurs when the user releases the mouse button (i.e., stops holding
* the button down) on the specified element.
*
* @param locator an element locator
*/
void mouseUp(String locator);
/**
* Simulates the event that occurs when the user releases the right mouse button (i.e., stops
* holding the button down) on the specified element.
*
* @param locator an element locator
*/
void mouseUpRight(String locator);
/**
* Simulates the event that occurs when the user releases the mouse button (i.e., stops holding
* the button down) at the specified location.
*
* @param locator an element locator
* @param coordString specifies the x,y position (i.e. - 10,20) of the mouse event relative to the
* element returned by the locator.
*/
void mouseUpAt(String locator, String coordString);
/**
* Simulates the event that occurs when the user releases the right mouse button (i.e., stops
* holding the button down) at the specified location.
*
* @param locator an element locator
* @param coordString specifies the x,y position (i.e. - 10,20) of the mouse event relative to the
* element returned by the locator.
*/
void mouseUpRightAt(String locator, String coordString);
/**
* Simulates a user pressing the mouse button (without releasing it yet) on the specified element.
*
* @param locator an element locator
*/
void mouseMove(String locator);
/**
* Simulates a user pressing the mouse button (without releasing it yet) on the specified element.
*
* @param locator an element locator
* @param coordString specifies the x,y position (i.e. - 10,20) of the mouse event relative to the
* element returned by the locator.
*/
void mouseMoveAt(String locator, String coordString);
/**
* Sets the value of an input field, as though you typed it in.
*
*
* 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.
*
*
* @param locator an element locator
* @param value the value to type
*/
void type(String locator, String value);
/**
* Simulates keystroke events on the specified element, as though you typed the value key-by-key.
*
*
* This is a convenience method for calling keyDown, keyUp, keyPress for every character in the
* specified string; this is useful for dynamic UI widgets (like auto-completing combo boxes) that
* require explicit key events.
*
*
* Unlike the simple "type" command, which forces the specified value into the page directly, this
* command may or may not have any visible effect, even in cases where typing keys would normally
* have a visible effect. For example, if you use "typeKeys" on a form element, you may or may not
* see the results of what you typed in the field.
*
*
* In some cases, you may need to use the simple "type" command to set the value of the field and
* then the "typeKeys" command to send the keystroke events corresponding to what you just typed.
*
*
* @param locator an element locator
* @param value the value to type
*/
void typeKeys(String locator, String value);
/**
* Set execution speed (i.e., set the millisecond length of a delay which will follow each
* selenium operation). By default, there is no such delay, i.e., the delay is 0 milliseconds.
*
* @param value the number of milliseconds to pause after operation
*/
void setSpeed(String value);
/**
* Get execution speed (i.e., get the millisecond length of the delay following each selenium
* operation). By default, there is no such delay, i.e., the delay is 0 milliseconds.
*
* See also setSpeed.
*
* @return the execution speed in milliseconds.
*/
String getSpeed();
/**
* Get RC logs associated with this session.
*
* @return the remote control logs associated with this session
*/
String getLog();
/**
* Check a toggle-button (checkbox/radio)
*
* @param locator an element locator
*/
void check(String locator);
/**
* Uncheck a toggle-button (checkbox/radio)
*
* @param locator an element locator
*/
void uncheck(String locator);
/**
* Select an option from a drop-down using an option locator.
*
*
* 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.
*
*
* - label=labelPattern: matches options based on their labels, i.e.
* the visible text. (This is the default.)
*
* - label=regexp:^[Oo]ther
*
*
* - value=valuePattern: matches options based on their values.
*
* - 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
*
*
*
*
* If no option locator prefix is provided, the default behavior is to match on
* label.
*
*
* @param selectLocator an element locator identifying a drop-down menu
* @param optionLocator an option locator (a label by default)
*/
void select(String selectLocator, String optionLocator);
/**
* Add a selection to the set of selected options in a multi-select element using an option
* locator.
*
* @param locator an element locator identifying a multi-select box
* @param optionLocator an option locator (a label by default)
*/
//@see #doSelect for details of option locators (THERE IS NO doSelect())
void addSelection(String locator, String optionLocator);
/**
* Remove a selection from the set of selected options in a multi-select element using an option
* locator.
*
* @param locator an element locator identifying a multi-select box
* @param optionLocator an option locator (a label by default)
*/
//@see #doSelect for details of option locators (NO SUCH METHOD I CAN FIND)
void removeSelection(String locator, String optionLocator);
/**
* Unselects all of the selected options in a multi-select element.
*
* @param locator an element locator identifying a multi-select box
*/
void removeAllSelections(String locator);
/**
* Submit the specified form. This is particularly useful for forms without submit buttons, e.g.
* single-input "Search" forms.
*
* @param formLocator an element locator for the form you want to submit
*/
void submit(String formLocator);
/**
* Opens an URL in the test frame. This accepts both relative and absolute URLs.
*
* The "open" command waits for the page to load before proceeding, ie. the "AndWait" suffix is
* implicit.
*
* Note: The URL must be on the same domain as the runner HTML due to security
* restrictions in the browser (Same Origin Policy). If you need to open an URL on another domain,
* use the Selenium Server to start a new browser session on that domain.
*
* @param url the URL to open; may be relative or absolute
* @param ignoreResponseCode if set to true, ignores http response code.
*/
void open(String url, String ignoreResponseCode);
/**
* Opens an URL in the test frame. This accepts both relative and absolute URLs.
*
* The "open" command waits for the page to load before proceeding, ie. the "AndWait" suffix is
* implicit.
*
* Note: The URL must be on the same domain as the runner HTML due to security
* restrictions in the browser (Same Origin Policy). If you need to open an URL on another domain,
* use the Selenium Server to start a new browser session on that domain.
*
* @param url the URL to open; may be relative or absolute
*/
void open(String url);
/**
* Opens a popup window (if a window with that ID isn't already open). After opening the window,
* you'll need to select it using the selectWindow command.
*
*
* This command can also be a useful workaround for bug SEL-339. In some cases, Selenium will be
* unable to intercept a call to window.open (if the call occurs during or before the "onLoad"
* event, for example). In those cases, you can force Selenium to notice the open window's name by
* using the Selenium openWindow command, using an empty (blank) url, like this: openWindow("",
* "myFunnyWindow").
*
*
* @param url the URL to open, which can be blank
* @param windowID the JavaScript window ID of the window to select
*/
void openWindow(String url, String windowID);
/**
* Selects a popup window using a window locator; once a popup window has been selected, all
* commands go to that window. To select the main window again, use null as the target.
*
*
*
* Window locators provide different ways of specifying the window object: by title, by internal
* JavaScript "name," or by JavaScript variable.
*
*
* - title=My Special Window: Finds the window using the text that
* appears in the title bar. Be careful; two windows can share the same title. If that happens,
* this locator will just pick one.
* - name=myWindow: Finds the window using its internal JavaScript
* "name" property. This is the second parameter "windowName" passed to the JavaScript method
* window.open(url, windowName, windowFeatures, replaceFlag) (which Selenium intercepts).
* - var=variableName: Some pop-up windows are unnamed (anonymous),
* but are associated with a JavaScript variable name in the current application window, e.g.
* "window.foo = window.open(url);". In those cases, you can open the window using "var=foo".
*
*
* If no window locator prefix is provided, we'll try to guess what you mean like this:
*
*
* 1.) if windowID is null, (or the string "null") then it is assumed the user is referring to the
* original window instantiated by the browser).
*
*
* 2.) if the value of the "windowID" parameter is a JavaScript variable name in the current
* application window, then it is assumed that this variable contains the return value from a call
* to the JavaScript window.open() method.
*
*
* 3.) Otherwise, selenium looks in a hash it maintains that maps string names to window "names".
*
*
* 4.) If that fails, we'll try looping over all of the known windows to try to find the
* appropriate "title". Since "title" is not necessarily unique, this may have unexpected
* behavior.
*
*
* If you're having trouble figuring out the name of a window that you want to manipulate, look at
* the Selenium log messages which identify the names of windows created via window.open (and
* therefore intercepted by Selenium). You will see messages like the following for each window as
* it is opened:
*
*
* debug: window.open call intercepted; window ID (which you can use with selectWindow()) is "myNewWindow"
*
*
* In some cases, Selenium will be unable to intercept a call to window.open (if the call occurs
* during or before the "onLoad" event, for example). (This is bug SEL-339.) In those cases, you
* can force Selenium to notice the open window's name by using the Selenium openWindow command,
* using an empty (blank) url, like this: openWindow("", "myFunnyWindow").
*
*
* @param windowID the JavaScript window ID of the window to select
*/
void selectWindow(String windowID);
/**
* Simplifies the process of selecting a popup window (and does not offer functionality beyond
* what selectWindow()
already provides).
*
* - If
windowID
is either not specified, or specified as "null", the first non-top
* window is selected. The top window is the one that would be selected by
* selectWindow()
without providing a windowID
. This should not be used
* when more than one popup window is in play.
* - Otherwise, the window will be looked up considering
windowID
as the following
* in order: 1) the "name" of the window, as specified to window.open()
; 2) a
* javascript variable which is a reference to a window; and 3) the title of the window. This is
* the same ordered lookup performed by selectWindow
.
*
*
* @param windowID an identifier for the popup window, which can take on a number of different
* meanings
*/
void selectPopUp(String windowID);
/**
* Selects the main window. Functionally equivalent to using selectWindow()
and
* specifying no value for windowID
.
*/
void deselectPopUp();
/**
* Selects a frame within the current window. (You may invoke this command multiple times to
* select nested frames.) To select the parent frame, use "relative=parent" as a locator; to
* select the top frame, use "relative=top". You can also select a frame by its 0-based index
* number; select the first frame with "index=0", or the third frame with "index=2".
*
*
* You may also use a DOM expression to identify the frame you want directly, like this:
* dom=frames["main"].frames["subframe"]
*
*
* @param locator an element locator identifying a frame or iframe
*/
void selectFrame(String locator);
/**
* Determine whether current/locator identify the frame containing this running code.
*
*
* This is useful in proxy injection mode, where this code runs in every browser frame and window,
* and sometimes the selenium server needs to identify the "current" frame. In this case, when the
* test calls selectFrame, this routine is called for each frame to figure out which one has been
* selected. The selected frame will return true, while all others will return false.
*
*
* @param currentFrameString starting frame
* @param target new frame (which might be relative to the current one)
* @return true if the new frame is this code's window
*/
boolean getWhetherThisFrameMatchFrameExpression(String currentFrameString, String target);
/**
* Determine whether currentWindowString plus target identify the window containing this running
* code.
*
*
* This is useful in proxy injection mode, where this code runs in every browser frame and window,
* and sometimes the selenium server needs to identify the "current" window. In this case, when
* the test calls selectWindow, this routine is called for each window to figure out which one has
* been selected. The selected window will return true, while all others will return false.
*
*
* @param currentWindowString starting window
* @param target new window (which might be relative to the current one, e.g., "_parent")
* @return true if the new window is this code's window
*/
boolean getWhetherThisWindowMatchWindowExpression(String currentWindowString, String target);
/**
* Waits for a popup window to appear and load up.
*
* @param windowID the JavaScript window "name" of the window that will appear (not the text of
* the title bar) If unspecified, or specified as "null", this command will wait for the
* first non-top window to appear (don't rely on this if you are working with multiple
* popups simultaneously).
* @param timeout a timeout in milliseconds, after which the action will return with an error. If
* this value is not specified, the default Selenium timeout will be used. See the
* setTimeout() command.
*/
void waitForPopUp(String windowID, String timeout);
/**
*
* By default, Selenium's overridden window.confirm() function will return true, as if the user
* had manually clicked OK; after running this command, the next call to confirm() will return
* false, as if the user had clicked Cancel. Selenium will then resume using the default behavior
* for future confirmations, automatically returning true (OK) unless/until you explicitly call
* this command for each confirmation.
*
*
* Take note - every time a confirmation comes up, you must consume it with a corresponding
* getConfirmation, or else the next selenium operation will fail.
*
*/
void chooseCancelOnNextConfirmation();
/**
*
* Undo the effect of calling chooseCancelOnNextConfirmation. Note that Selenium's overridden
* window.confirm() function will normally automatically return true, as if the user had manually
* clicked OK, so you shouldn't need to use this command unless for some reason you need to change
* your mind prior to the next confirmation. After any confirmation, Selenium will resume using
* the default behavior for future confirmations, automatically returning true (OK) unless/until
* you explicitly call chooseCancelOnNextConfirmation for each confirmation.
*
*
* Take note - every time a confirmation comes up, you must consume it with a corresponding
* getConfirmation, or else the next selenium operation will fail.
*
*/
void chooseOkOnNextConfirmation();
/**
* Instructs Selenium to return the specified answer string in response to the next JavaScript
* prompt [window.prompt()].
*
* @param answer the answer to give in response to the prompt pop-up
*/
void answerOnNextPrompt(String answer);
/** Simulates the user clicking the "back" button on their browser. */
void goBack();
/** Simulates the user clicking the "Refresh" button on their browser. */
void refresh();
/**
* Simulates the user clicking the "close" button in the titlebar of a popup window or tab.
*/
void close();
/**
* Has an alert occurred?
*
*
* This function never throws an exception
*
*
* @return true if there is an alert
*/
boolean isAlertPresent();
/**
* Has a prompt occurred?
*
*
* This function never throws an exception
*
*
* @return true if there is a pending prompt
*/
boolean isPromptPresent();
/**
* Has confirm() been called?
*
*
* This function never throws an exception
*
*
* @return true if there is a pending confirmation
*/
boolean isConfirmationPresent();
/**
* Retrieves the message of a JavaScript alert generated during the previous action, or fail if
* there were no alerts.
*
*
* Getting an alert has the same effect as manually clicking OK. If an alert is generated but you
* do not consume it with getAlert, the next Selenium action will fail.
*
*
* Under Selenium, JavaScript alerts will NOT pop up a visible alert dialog.
*
*
* 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.
*
*
* @return The message of the most recent JavaScript alert
*/
String getAlert();
/**
* Retrieves the message of a JavaScript confirmation dialog generated during the previous action.
*
*
* 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 a confirmation is generated but you do not consume it with getConfirmation, 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.
*
*
* @return the message of the most recent JavaScript confirmation dialog
*/
String getConfirmation();
/**
* Retrieves the message of a JavaScript question prompt dialog generated during the previous
* action.
*
*
* 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.
*
*
* @return the message of the most recent JavaScript question prompt
*/
String getPrompt();
/**
* Gets the absolute URL of the current page.
*
* @return the absolute URL of the current page
*/
String getLocation();
/**
* Gets the title of the current page.
*
* @return the title of the current page
*/
String getTitle();
/**
* Gets the entire text of the page.
*
* @return the entire text of the page
*/
String getBodyText();
/**
* Gets the (whitespace-trimmed) value of an input field (or anything else with a value
* parameter). For checkbox/radio elements, the value will be "on" or "off" depending on whether
* the element is checked or not.
*
* @param locator an element locator
* @return the element value, or "on/off" for checkbox/radio elements
*/
String getValue(String locator);
/**
* Gets the text of an element. This works for any element that contains text. This command uses
* either the textContent (Mozilla-like browsers) or the innerText (IE-like browsers) of the
* element, which is the rendered text shown to the user.
*
* @param locator an element locator
* @return the text of the element
*/
String getText(String locator);
/**
* Briefly changes the backgroundColor of the specified element yellow. Useful for debugging.
*
* @param locator an element locator
*/
void highlight(String locator);
/**
* Gets the result of evaluating the specified JavaScript snippet. The snippet may have multiple
* lines, but only the result of the last line will be returned.
*
*
* Note that, by default, the snippet will run in the context of the "selenium" object itself, so
* this
will refer to the Selenium object. Use window
to refer to the
* window of your application, e.g. window.document.getElementById('foo')
*
*
* If you need to use a locator to refer to a single element in your application page, you can use
* this.browserbot.findElement("id=foo")
where "id=foo" is your locator.
*
*
* @param script the JavaScript snippet to run
* @return the results of evaluating the snippet
*/
String getEval(String script);
/**
* Gets whether a toggle-button (checkbox/radio) is checked. Fails if the specified element
* doesn't exist or isn't a toggle-button.
*
* @param locator an element locator pointing to a checkbox or radio
* button
* @return true if the checkbox is checked, false otherwise
*/
boolean isChecked(String locator);
/**
* Gets the text from a cell of a table. The cellAddress syntax tableLocator.row.column, where row
* and column start at 0.
*
* @param tableCellAddress a cell address, e.g. "foo.1.4"
* @return the text from the specified cell
*/
String getTable(String tableCellAddress);
/**
* Gets all option labels (visible text) for selected options in the specified select or
* multi-select element.
*
* @param selectLocator an element locator identifying a drop-down menu
* @return an array of all selected option labels in the specified select drop-down
*/
String[] getSelectedLabels(String selectLocator);
/**
* Gets option label (visible text) for selected option in the specified select element.
*
* @param selectLocator an element locator identifying a drop-down menu
* @return the selected option label in the specified select drop-down
*/
String getSelectedLabel(String selectLocator);
/**
* Gets all option values (value attributes) for selected options in the specified select or
* multi-select element.
*
* @param selectLocator an element locator identifying a drop-down menu
* @return an array of all selected option values in the specified select drop-down
*/
String[] getSelectedValues(String selectLocator);
/**
* Gets option value (value attribute) for selected option in the specified select element.
*
* @param selectLocator an element locator identifying a drop-down menu
* @return the selected option value in the specified select drop-down
*/
String getSelectedValue(String selectLocator);
/**
* Gets all option indexes (option number, starting at 0) for selected options in the specified
* select or multi-select element.
*
* @param selectLocator an element locator identifying a drop-down menu
* @return an array of all selected option indexes in the specified select drop-down
*/
String[] getSelectedIndexes(String selectLocator);
/**
* Gets option index (option number, starting at 0) for selected option in the specified select
* element.
*
* @param selectLocator an element locator identifying a drop-down menu
* @return the selected option index in the specified select drop-down
*/
String getSelectedIndex(String selectLocator);
/**
* Gets all option element IDs for selected options in the specified select or multi-select
* element.
*
* @param selectLocator an element locator identifying a drop-down menu
* @return an array of all selected option IDs in the specified select drop-down
*/
String[] getSelectedIds(String selectLocator);
/**
* Gets option element ID for selected option in the specified select element.
*
* @param selectLocator an element locator identifying a drop-down menu
* @return the selected option ID in the specified select drop-down
*/
String getSelectedId(String selectLocator);
/**
* Determines whether some option in a drop-down menu is selected.
*
* @param selectLocator an element locator identifying a drop-down menu
* @return true if some option has been selected, false otherwise
*/
boolean isSomethingSelected(String selectLocator);
/**
* Gets all option labels in the specified select drop-down.
*
* @param selectLocator an element locator identifying a drop-down menu
* @return an array of all option labels in the specified select drop-down
*/
String[] getSelectOptions(String selectLocator);
/**
* Gets the value of an element attribute. The value of the attribute may differ across browsers
* (this is the case for the "style" attribute, for example).
*
* @param attributeLocator an element locator followed by an @ sign and then the name of the
* attribute, e.g. "foo@bar"
* @return the value of the specified attribute
*/
String getAttribute(String attributeLocator);
/**
* Verifies that the specified text pattern appears somewhere on the rendered page shown to the
* user.
*
* @param pattern a pattern to match with the text of the page
* @return true if the pattern matches the text, false otherwise
*/
boolean isTextPresent(String pattern);
/**
* Verifies that the specified element is somewhere on the page.
*
* @param locator an element locator
* @return true if the element is present, false otherwise
*/
boolean isElementPresent(String locator);
/**
* Determines if the specified element is visible. An element can be rendered invisible by setting
* the CSS "visibility" property to "hidden", or the "display" property to "none", either for the
* element itself or one of its ancestors. This method will fail if the element is not present.
*
* @param locator an element locator
* @return true if the specified element is visible, false otherwise
*/
boolean isVisible(String locator);
/**
* Determines whether the specified input element is editable, ie hasn't been disabled. This
* method will fail if the specified element isn't an input element.
*
* @param locator an element locator
* @return true if the input element is editable, false otherwise
*/
boolean isEditable(String locator);
/**
* Returns the IDs of all buttons on the page.
*
*
* If a given button has no ID, it will appear as "" in this array.
*
*
* @return the IDs of all buttons on the page
*/
String[] getAllButtons();
/**
* Returns the IDs of all links on the page.
*
*
* If a given link has no ID, it will appear as "" in this array.
*
*
* @return the IDs of all links on the page
*/
String[] getAllLinks();
/**
* Returns the IDs of all input fields on the page.
*
*
* If a given field has no ID, it will appear as "" in this array.
*
*
* @return the IDs of all fields on the page
*/
String[] getAllFields();
/**
* Returns every instance of some attribute from all known windows.
*
* @param attributeName name of an attribute on the windows
* @return the set of values of this attribute from all known windows.
*/
String[] getAttributeFromAllWindows(String attributeName);
/**
* deprecated - use dragAndDrop instead
*
* @param locator an element locator
* @param movementsString offset in pixels from the current location to which the element should
* be moved, e.g., "+70,-300"
*/
void dragdrop(String locator, String movementsString);
/**
* Configure the number of pixels between "mousemove" events during dragAndDrop commands
* (default=10).
*
* Setting this value to 0 means that we'll send a "mousemove" event to every single pixel in
* between the start location and the end location; that can be very slow, and may cause some
* browsers to force the JavaScript to timeout.
*
*
* If the mouse speed is greater than the distance between the two dragged objects, we'll just
* send one "mousemove" at the start location and then one final one at the end location.
*
*
* @param pixels the number of pixels between "mousemove" events
*/
void setMouseSpeed(String pixels);
/**
* Returns the number of pixels between "mousemove" events during dragAndDrop commands
* (default=10).
*
* @return the number of pixels between "mousemove" events during dragAndDrop commands
* (default=10)
*/
Number getMouseSpeed();
/**
* Drags an element a certain distance and then drops it
*
* @param locator an element locator
* @param movementsString offset in pixels from the current location to which the element should
* be moved, e.g., "+70,-300"
*/
void dragAndDrop(String locator, String movementsString);
/**
* Drags an element and drops it on another element
*
* @param locatorOfObjectToBeDragged an element to be dragged
* @param locatorOfDragDestinationObject an element whose location (i.e., whose center-most pixel)
* will be the point where locatorOfObjectToBeDragged is dropped
*/
void dragAndDropToObject(String locatorOfObjectToBeDragged, String locatorOfDragDestinationObject);
/** Gives focus to the currently selected window */
void windowFocus();
/** Resize currently selected window to take up the entire screen */
void windowMaximize();
/**
* Returns the IDs of all windows that the browser knows about.
*
* @return the IDs of all windows that the browser knows about.
*/
String[] getAllWindowIds();
/**
* Returns the names of all windows that the browser knows about.
*
* @return the names of all windows that the browser knows about.
*/
String[] getAllWindowNames();
/**
* Returns the titles of all windows that the browser knows about.
*
* @return the titles of all windows that the browser knows about.
*/
String[] getAllWindowTitles();
/**
* Returns the entire HTML source between the opening and closing "html" tags.
*
* @return the entire HTML source
*/
String getHtmlSource();
/**
* Moves the text cursor to the specified position in the given input element or textarea. This
* method will fail if the specified element isn't an input element or textarea.
*
* @param locator an element locator pointing to an input element or
* textarea
* @param position 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.
*/
void setCursorPosition(String locator, String position);
/**
* Get the relative index of an element to its parent (starting from 0). The comment node and
* empty text node will be ignored.
*
* @param locator an element locator pointing to an element
* @return of relative index of the element to its parent (starting from 0)
*/
Number getElementIndex(String locator);
/**
* Check if these two elements have same parent and are ordered siblings in the DOM. Two same
* elements will not be considered ordered.
*
* @param locator1 an element locator pointing to the first element
* @param locator2 an element locator pointing to the second element
* @return true if element1 is the previous sibling of element2, false otherwise
*/
boolean isOrdered(String locator1, String locator2);
/**
* Retrieves the horizontal position of an element
*
* @param locator an element locator pointing to an element OR an element
* itself
* @return of pixels from the edge of the frame.
*/
Number getElementPositionLeft(String locator);
/**
* Retrieves the vertical position of an element
*
* @param locator an element locator pointing to an element OR an element
* itself
* @return of pixels from the edge of the frame.
*/
Number getElementPositionTop(String locator);
/**
* Retrieves the width of an element
*
* @param locator an element locator pointing to an element
* @return width of an element in pixels
*/
Number getElementWidth(String locator);
/**
* Retrieves the height of an element
*
* @param locator an element locator pointing to an element
* @return height of an element in pixels
*/
Number getElementHeight(String locator);
/**
* Retrieves the text cursor position in the given input element or textarea; beware, this may not
* work perfectly on all browsers.
*
*
* 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.
*
* @param locator an element locator pointing to an input element or
* textarea
* @return the numerical position of the cursor in the field
*/
Number getCursorPosition(String locator);
/**
* Returns the specified expression.
*
*
* This is useful because of JavaScript preprocessing. It is used to generate commands like
* assertExpression and waitForExpression.
*
*
* @param expression the value to return
* @return the value passed in
*/
String getExpression(String expression);
/**
* Returns the number of nodes that match the specified xpath, eg. "//table" would give the number
* of tables.
*
* @param xpath the xpath expression to evaluate. do NOT wrap this expression in a 'count()'
* function; we will do that for you.
* @return the number of nodes that match the specified xpath
*/
Number getXpathCount(String xpath);
/**
* Returns the number of nodes that match the specified css selector, eg. "css=table" would give
* the number of tables.
*
* @param css the css selector to evaluate. do NOT wrap this expression in a 'count()' function;
* we will do that for you.
* @return the number of nodes that match the specified selector
*/
Number getCssCount(String css);
/**
* Temporarily sets the "id" attribute of the specified element, so you can locate it in the
* future using its ID rather than a slow/complicated XPath. This ID will disappear once the page
* is reloaded.
*
* @param locator an element locator pointing to an element
* @param identifier a string to be used as the ID of the specified element
*/
void assignId(String locator, String identifier);
/**
* Specifies whether Selenium should use the native in-browser implementation of XPath (if any
* native version is available); if you pass "false" to this function, we will always use our
* pure-JavaScript xpath library. Using the pure-JS xpath library can improve the consistency of
* xpath element locators between different browser vendors, but the pure-JS version is much
* slower than the native implementations.
*
* @param allow boolean, true means we'll prefer to use native XPath; false means we'll only use
* JS XPath
*/
void allowNativeXpath(String allow);
/**
* Specifies whether Selenium will ignore xpath attributes that have no value, i.e. are the empty
* string, when using the non-native xpath evaluation engine. You'd want to do this for
* performance reasons in IE. However, this could break certain xpaths, for example an xpath that
* looks for an attribute whose value is NOT the empty string.
*
* The hope is that such xpaths are relatively rare, but the user should have the option of using
* them. Note that this only influences xpath evaluation when using the ajaxslt engine (i.e. not
* "javascript-xpath").
*
* @param ignore boolean, true means we'll ignore attributes without value at the expense of xpath
* "correctness"; false means we'll sacrifice speed for correctness.
*/
void ignoreAttributesWithoutValue(String ignore);
/**
* Runs the specified JavaScript snippet repeatedly until it evaluates to "true". The snippet may
* have multiple lines, but only the result of the last line will be considered.
*
*
* 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
*
*
* @param script the JavaScript snippet to run
* @param timeout a timeout in milliseconds, after which this command will return with an error
*/
void waitForCondition(String script, String timeout);
/**
* Specifies the amount of time that Selenium will wait for actions to complete.
*
*
* Actions that require waiting include "open" and the "waitFor*" actions.
*
* The default timeout is 30 seconds.
*
* @param timeout a timeout in milliseconds, after which the action will return with an error
*/
void setTimeout(String timeout);
/**
* Waits for a new page to load.
*
*
* 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.
*
*
* @param timeout a timeout in milliseconds, after which this command will return with an error
*/
void waitForPageToLoad(String timeout);
/**
* Waits for a new frame to load.
*
*
* Selenium constantly keeps track of new pages and frames loading, and sets a "newPageLoaded"
* flag when it first notices a page load.
*
*
* See waitForPageToLoad for more information.
*
* @param frameAddress FrameAddress from the server side
* @param timeout a timeout in milliseconds, after which this command will return with an error
*/
void waitForFrameToLoad(String frameAddress, String timeout);
/**
* Return all cookies of the current page under test.
*
* @return all cookies of the current page under test
*/
String getCookie();
/**
* Returns the value of the cookie with the specified name, or throws an error if the cookie is
* not present.
*
* @param name the name of the cookie
* @return the value of the cookie
*/
String getCookieByName(String name);
/**
* Returns true if a cookie with the specified name is present, or false otherwise.
*
* @param name the name of the cookie
* @return true if a cookie with the specified name is present, or false otherwise.
*/
boolean isCookiePresent(String name);
/**
* Create a new cookie whose path and domain are same with those of current page under test,
* unless you specified a path for this cookie explicitly.
*
* @param nameValuePair name and value of the cookie in a format "name=value"
* @param optionsString options for the cookie. Currently supported options include 'path',
* 'max_age' and 'domain'. the optionsString's format is
* "path=/path/, max_age=60, domain=.foo.com". The order of options are irrelevant, the
* unit of the value of 'max_age' is second. Note that specifying a domain that isn't a
* subset of the current domain will usually fail.
*/
void createCookie(String nameValuePair, String optionsString);
/**
* Delete a named cookie with specified path and domain. Be careful; to delete a cookie, you need
* to delete it using the exact same path and domain that were used to create the cookie. If the
* path is wrong, or the domain is wrong, the cookie simply won't be deleted. Also note that
* specifying a domain that isn't a subset of the current domain will usually fail.
*
* Since there's no way to discover at runtime the original path and domain of a given cookie,
* we've added an option called 'recurse' to try all sub-domains of the current domain with all
* paths that are a subset of the current path. Beware; this option can be slow. In big-O
* notation, it operates in O(n*m) time, where n is the number of dots in the domain name and m is
* the number of slashes in the path.
*
* @param name the name of the cookie to be deleted
* @param optionsString options for the cookie. Currently supported options include 'path',
* 'domain' and 'recurse.' The optionsString's format is
* "path=/path/, domain=.foo.com, recurse=true". The order of options are irrelevant. Note
* that specifying a domain that isn't a subset of the current domain will usually fail.
*/
void deleteCookie(String name, String optionsString);
/**
* Calls deleteCookie with recurse=true on all cookies visible to the current page. As noted on
* the documentation for deleteCookie, recurse=true can be much slower than simply deleting the
* cookies using a known domain/path.
*/
void deleteAllVisibleCookies();
/**
* Sets the threshold for browser-side logging messages; log messages beneath this threshold will
* be discarded. Valid logLevel strings are: "debug", "info", "warn", "error" or "off". To see the
* browser logs, you need to either show the log window in GUI mode, or enable browser-side
* logging in Selenium RC.
*
* @param logLevel one of the following: "debug", "info", "warn", "error" or "off"
*/
void setBrowserLogLevel(String logLevel);
/**
* Creates a new "script" tag in the body of the current test window, and adds the specified text
* into the body of the command. Scripts run in this way can often be debugged more easily than
* scripts executed using Selenium's "getEval" command. Beware that JS exceptions thrown in these
* script tags aren't managed by Selenium, so you should probably wrap your script in try/catch
* blocks if there is any chance that the script will throw an exception.
*
* @param script the JavaScript snippet to run
*/
void runScript(String script);
/**
* Defines a new function for Selenium to locate elements on the page. For example, if you define
* the strategy "foo", and someone runs click("foo=blah"), we'll run your function, passing you
* the string "blah", and click on the element that your function returns, or throw an
* "Element not found" error if your function returns null.
*
* We'll pass three arguments to your function:
*
* - locator: the string the user passed in
* - inWindow: the currently selected window
* - inDocument: the currently selected document
*
* The function must return null if the element can't be found.
*
* @param strategyName the name of the strategy to define; this should use only letters [a-zA-Z]
* with no spaces or other punctuation.
* @param functionDefinition a string defining the body of a function in JavaScript. For example:
* return inDocument.getElementById(locator);
*/
void addLocationStrategy(String strategyName, String functionDefinition);
/**
* Saves the entire contents of the current window canvas to a PNG file. Contrast this with the
* captureScreenshot command, which captures the contents of the OS viewport (i.e. whatever is
* currently being displayed on the monitor), and is implemented in the RC only. Currently this
* only works in Firefox when running in chrome mode, and in IE non-HTA using the EXPERIMENTAL
* "Snapsie" utility. The Firefox implementation is mostly borrowed from the Screengrab! Firefox
* extension. Please see http://www.screengrab.org and http://snapsie.sourceforge.net/ for
* details.
*
* @param filename the path to the file to persist the screenshot as. No filename extension will
* be appended by default. Directories will not be created if they do not exist, and an
* exception will be thrown, possibly by native code.
* @param kwargs a kwargs string that modifies the way the screenshot is captured. Example:
* "background=#CCFFDD" . Currently valid options:
*
* - background
* - the background CSS for the HTML document. This may be useful to set for capturing
* screenshots of less-than-ideal layouts, for example where absolute positioning causes
* the calculation of the canvas dimension to fail and a black background is exposed
* (possibly obscuring black text).
*
*/
void captureEntirePageScreenshot(String filename, String kwargs);
/**
* Executes a command rollup, which is a series of commands with a unique name, and optionally
* arguments that control the generation of the set of commands. If any one of the rolled-up
* commands fails, the rollup is considered to have failed. Rollups may also contain nested
* rollups.
*
* @param rollupName the name of the rollup command
* @param kwargs keyword arguments string that influences how the rollup expands into commands
*/
void rollup(String rollupName, String kwargs);
/**
* Loads script content into a new script tag in the Selenium document. This differs from the
* runScript command in that runScript adds the script tag to the document of the AUT, not the
* Selenium document. The following entities in the script content are replaced by the characters
* they represent:
*
* < > &
*
* The corresponding remove command is removeScript.
*
* @param scriptContent the Javascript content of the script to add
* @param scriptTagId (optional) the id of the new script tag. If specified, and an element with
* this id already exists, this operation will fail.
*/
void addScript(String scriptContent, String scriptTagId);
/**
* Removes a script tag from the Selenium document identified by the given id. Does nothing if the
* referenced tag doesn't exist.
*
* @param scriptTagId the id of the script element to remove.
*/
void removeScript(String scriptTagId);
/**
* Allows choice of one of the available libraries.
*
* @param libraryName name of the desired library Only the following three can be chosen:
*
* - "ajaxslt" - Google's library
* - "javascript-xpath" - Cybozu Labs' faster library
* - "default" - The default library. Currently the default library is "ajaxslt" .
*
* If libraryName isn't one of these three, then no change will be made.
*/
void useXpathLibrary(String libraryName);
/**
* Writes a message to the status bar and adds a note to the browser-side log.
*
* @param context the message to be sent to the browser
*/
void setContext(String context);
/**
* Sets a file input (upload) field to the file listed in fileLocator
*
* @param fieldLocator an element locator
* @param fileLocator a URL pointing to the specified file. Before the file can be set in the
* input field (fieldLocator), Selenium RC may need to transfer the file to the local
* machine before attaching the file in a web page form. This is common in selenium grid
* configurations where the RC server driving the browser is not the same machine that
* started the test. Supported Browsers: Firefox ("*chrome") only.
*/
void attachFile(String fieldLocator, String fileLocator);
/**
* Captures a PNG screenshot to the specified file.
*
* @param filename the absolute path to the file to be written, e.g. "c:\blah\screenshot.png"
*/
void captureScreenshot(String filename);
/**
* Capture a PNG screenshot. It then returns the file as a base 64 encoded string.
*
* @return The base 64 encoded string of the screen shot (PNG file)
*/
String captureScreenshotToString();
/**
* Returns the network traffic seen by the browser, including headers, AJAX requests, status
* codes, and timings. When this function is called, the traffic log is cleared, so the returned
* content is only the traffic seen since the last call.
*
* @param type The type of data to return the network traffic as. Valid values are: json, xml, or
* plain.
* @return A string representation in the defined type of the network traffic seen by the browser.
*/
String captureNetworkTraffic(String type);
/**
* Tells the Selenium server to add the specified key and value as a custom outgoing request
* header. This only works if the browser is configured to use the built-in Selenium proxy.
*
* @param key the header name.
* @param value the header value.
*/
void addCustomRequestHeader(String key, String value);
/**
* Downloads a screenshot of the browser current window canvas to a based 64 encoded PNG file. The
* entire windows canvas is captured, including parts rendered outside of the current
* view port.
*
* Currently this only works in Mozilla and when running in chrome mode.
*
* @param kwargs A kwargs string that modifies the way the screenshot is captured. Example:
* "background=#CCFFDD". This may be useful to set for capturing screenshots of
* less-than-ideal layouts, for example where absolute positioning causes the calculation
* of the canvas dimension to fail and a black background is exposed (possibly obscuring
* black text).
* @return The base 64 encoded string of the page screenshot (PNG file)
*/
String captureEntirePageScreenshotToString(String kwargs);
/**
* Kills the running Selenium Server and all browser sessions. After you run this command, you
* will no longer be able to send commands to the server; you can't remotely start the server once
* it has been stopped. Normally you should prefer to run the "stop" command, which terminates the
* current browser session, rather than shutting down the entire server.
*/
void shutDownSeleniumServer();
/**
* Retrieve the last messages logged on a specific remote control. Useful for error reports,
* especially when running multiple remote controls in a distributed environment. The maximum
* number of log messages that can be retrieve is configured on remote control startup.
*
* @return The last N log messages as a multi-line string.
*/
String retrieveLastRemoteControlLogs();
/**
* Simulates a user pressing a key (without releasing it yet) by sending a native operating system
* keystroke. This function uses the java.awt.Robot class to send a keystroke; this more
* accurately simulates typing a key on the keyboard. It does not honor settings from the
* shiftKeyDown, controlKeyDown, altKeyDown and metaKeyDown commands, and does not target any
* particular HTML element. To send a keystroke to a particular element, focus on the element
* first before running this command.
*
* @param keycode an integer keycode number corresponding to a java.awt.event.KeyEvent; note that
* Java keycodes are NOT the same thing as JavaScript keycodes!
*/
void keyDownNative(String keycode);
/**
* Simulates a user releasing a key by sending a native operating system keystroke. This function
* uses the java.awt.Robot class to send a keystroke; this more accurately simulates typing a key
* on the keyboard. It does not honor settings from the shiftKeyDown, controlKeyDown, altKeyDown
* and metaKeyDown commands, and does not target any particular HTML element. To send a keystroke
* to a particular element, focus on the element first before running this command.
*
* @param keycode an integer keycode number corresponding to a java.awt.event.KeyEvent; note that
* Java keycodes are NOT the same thing as JavaScript keycodes!
*/
void keyUpNative(String keycode);
/**
* Simulates a user pressing and releasing a key by sending a native operating system keystroke.
* This function uses the java.awt.Robot class to send a keystroke; this more accurately simulates
* typing a key on the keyboard. It does not honor settings from the shiftKeyDown, controlKeyDown,
* altKeyDown and metaKeyDown commands, and does not target any particular HTML element. To send a
* keystroke to a particular element, focus on the element first before running this command.
*
* @param keycode an integer keycode number corresponding to a java.awt.event.KeyEvent; note that
* Java keycodes are NOT the same thing as JavaScript keycodes!
*/
void keyPressNative(String keycode);
}