|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.openqa.selenium.server.SeleniumServer
Provides a server that can launch/terminate browsers and can receive Selenese commands over HTTP and send them on to the browser.
To run Selenium Server, run:
java -jar selenium-server-1.0-SNAPSHOT.jar [-port 4444] [-interactive] [-timeout 1800]
Where -port
specifies the port you wish to run the Server on (default is 4444).
Where -timeout
specifies the number of seconds that you allow data to wait all in the
communications queues before an exception is thrown.
Using the -interactive
flag will start the server in Interactive mode.
In this mode you can type Selenese commands on the command line (e.g. cmd=open&1=http://www.yahoo.com).
You may also interactively specify commands to run on a particular "browser session" (see below) like this:
cmd=open&1=http://www.yahoo.com&sessionId=1234
The server accepts three types of HTTP requests on its port:
http://www.yahoo.com/selenium-server/driver/?seleniumStart=true&sessionId=1234
The driver will then reply with a command to run in the body of the HTTP response, e.g. "|open|http://www.yahoo.com||". Once
the browser is done with this request, the browser will issue a new request for more work, this
time reporting the results of the previous command:http://www.yahoo.com/selenium-server/driver/?commandResult=OK&sessionId=1234
The action list is listed in selenium-api.js. Normal actions like "doClick" will return "OK" if
clicking was successful, or some other error string if there was an error. Assertions like
assertTextPresent or verifyTextPresent will return "PASSED" if the assertion was true, or
some other error string if the assertion was false. Getters like "getEval" will return the
result of the get command. "getAllLinks" will return a comma-delimited list of links.http://localhost:4444/selenium-server/driver/?commandRequest=|open|http://www.yahoo.com||&sessionId=1234
The Selenium Server will not respond to the HTTP request until the browser has finished performing the requested
command; when it does, it will reply with the result of the command (e.g. "OK" or "PASSED") in the
body of the HTTP response. (Note that -interactive
mode also works by sending these
HTTP requests, so tests using -interactive
mode will behave exactly like an external client driver.)
There are some special commands that only work in the Selenium Server. These commands are:
getNewBrowserSession( browserString, startURL )
Creates a new "sessionId" number (based on the current time in milliseconds) and launches the browser specified in browserString. We will then browse directly to startURL + "/selenium-server/SeleneseRunner.html?sessionId=###" where "###" is the sessionId number. Only commands that are associated with the specified sessionId will be run by this browser.
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.
testComplete( )
Kills the currently running browser and erases the old browser session. If the current browser session was not
launched using getNewBrowserSession
, or if that session number doesn't exist in the server, this
command will return an error.
shutDown( )
Causes the server to shut itself down, killing itself and all running browsers along with it.
Example:
cmd=getNewBrowserSession&1=*firefox&2=http://www.google.com
Got result: 1140738083345
cmd=open&1=http://www.google.com&sessionId=1140738083345
Got result: OK
cmd=type&1=q&2=hello world&sessionId=1140738083345
Got result: OK
cmd=testComplete&sessionId=1140738083345
Got result: OK
If you open a browser manually and do not specify a session ID, it will look for commands using the "null" session. You may then similarly send commands to this browser by not specifying a sessionId when issuing commands.
Field Summary | |
static int |
DEFAULT_PORT
|
static int |
DEFAULT_TIMEOUT
|
Constructor Summary | |
SeleniumServer()
|
|
SeleniumServer(int port)
Prepares a Jetty server with its HTTP handlers. |
Method Summary | |
void |
addNewStaticContent(java.io.File directory)
|
java.lang.String |
doCommand(java.lang.String cmd,
java.util.Vector values,
java.lang.String sessionId)
|
int |
getPort()
|
org.mortbay.jetty.Server |
getServer()
Exposes the internal Jetty server used by Selenium. |
void |
handleHTMLRunnerResults(HTMLResultsListener listener)
|
static boolean |
isDebugMode()
|
static void |
main(java.lang.String[] args)
Starts up the server on the specified port (or default if no port was specified) and then starts interactive mode if specified. |
static void |
setDebugMode(boolean debugMode)
|
void |
start()
Starts the Jetty server |
void |
stop()
Stops the Jetty server |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final int DEFAULT_PORT
public static final int DEFAULT_TIMEOUT
Constructor Detail |
public SeleniumServer(int port) throws java.lang.Exception
port
- - the port to start on
java.lang.Exception
- - you know, just in casepublic SeleniumServer() throws java.lang.Exception
Method Detail |
public static void main(java.lang.String[] args) throws java.lang.Exception
args
- - either "-port" followed by a number, or "-interactive"
java.lang.Exception
- - you know, just in case.public void addNewStaticContent(java.io.File directory)
public void handleHTMLRunnerResults(HTMLResultsListener listener)
public java.lang.String doCommand(java.lang.String cmd, java.util.Vector values, java.lang.String sessionId)
public void start() throws java.lang.Exception
java.lang.Exception
public void stop() throws java.lang.InterruptedException
java.lang.InterruptedException
public int getPort()
public org.mortbay.jetty.Server getServer()
public static boolean isDebugMode()
public static void setDebugMode(boolean debugMode)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |