Interacting with SeleniumRC directly

In my previous post, I talked about launching Selenium RC from the command line.   I’d mentioned navigating to http://localhost:4444/ after starting the Selenium Server but removed it since it wasn’t directly pertinent to a getting started post.  Here’s the removed content:

You can launch selenium-server in “interactive” mode and enter commands directly from the command interface.

C:\selenium-remote-control-1.0.1\selenium-server-1.0.1>java -jar selenium-server.jar -interactive
11:54:06.143 INFO - Java: Sun Microsystems Inc. 1.5.0_13-b05
11:54:06.145 INFO - OS: Windows Vista 6.0 x86
11:54:06.161 INFO - v1.0.1 [2696], with Core v@VERSION@ [@REVISION@]
11:54:06.300 INFO - Version Jetty/5.1.x
11:54:06.302 INFO - Started HttpContext[/,/]
11:54:06.306 INFO - Started HttpContext[/selenium-server,/selenium-server]
11:54:06.308 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
11:54:06.338 INFO - Started SocketListener on 0.0.0.0:4444
11:54:06.340 INFO - Started org.mortbay.jetty.Server@863399
Entering interactive mode... type Selenium commands here (e.g: cmd=open&1=http://www.yahoo.com)

The format for the query string is the same as for a HTML table in Selenese:

  • What comes after “cmd=” is the first column.
  • What comes after “&1=” is the second column.
  • What comes after “&2=” is the third column (sometimes optional).

All normal commands including “open”, “type”, “click”, “verifyTextPresent”, etc. are supported, as well as special commands such getNewBrowserSession and shutDownSeleniumServer.

The first thing you need to do is start a browser session.  You can either type in the command window (when in interactive mode):

cmd=getNewBrowserSession&1=*chrome&2=http://one-shore.com
12:14:20.698 INFO - ---> Requesting http://localhost:4444/selenium-server/driver?cmd=getNewBrowserSession&1=*chrome&2=ht
tp://one-shore.com
12:14:20.706 INFO - Command request: getNewBrowserSession[*chrome, http://one-shore.com] on session null
12:14:20.708 INFO - creating new remote session
12:14:20.710 INFO - Allocated session e4c0bda97077462aa916c61111a7f806 for http://one-shore.com, launching...
12:14:20.842 INFO - Preparing Firefox profile...
12:14:24.647 INFO - Launching Firefox...

or you can enter the url in a browser:

http://localhost:4444/selenium-server/driver/?cmd=getNewBrowserSession&1=*chrome&2=http://one-shore.com

You’ll notice that when you ran the command getNewBrowserSession, it opened two new browser windows.

The first windows is a controller window.  You can interact with this much as you would with the command line. The second window is a blank window, that will eventually be the window where your commands get executed.

The first window  is the “chrome” driver.  It is the controlling interface for selenium RC. (Chrome refers to the base version of Firefox, which has elevated privileges (and thus can avoid cross-site scripting limitations.  The equivalent for Internet Explorer is “iehta”.)

selenium_rc_chrome

There are three frames.  The first is the control frame, the second shows a command history, and the third is blank.  Depending on your configuration, the commands are executed in either the third frame, or in the second window (which is the default for newer versions of Selenium RC.)

A sessionID is returned, and will be needed to be passed as an argument to interact with selenium-server from the URL.  The command line interface is tied to the sessionID automatically.

cmd=open&1=/contact
12:36:18.783 INFO - ---> Requesting http://localhost:4444/selenium-server/driver?cmd=open&1=/contact&sessionId=bb5439b87
fec422282d2ec42a2611171
12:36:18.803 INFO - Command request: open[/contact, ] on session bb5439b87fec422282d2ec42a2611171
12:36:19.379 INFO - Got result: OK on session bb5439b87fec422282d2ec42a2611171
12:37:30.973 INFO - Command request: open[/about, ] on session bb5439b87fec422282d2ec42a2611171
12:37:31.192 INFO - Got result: OK on session bb5439b87fec422282d2ec42a2611171
12:39:25.267 INFO - Got result: ERROR: Command timed out on session 79eaade6ab7249a1ac05ac71eab60e33

or enter the following URL into any browser window.

http://localhost:4444/selenium-server/driver?cmd=open&1=/contact&sessionId=bb5439b87fec422282d2ec42a2611171

Note that you have to pass the sessionID as well.  This is the only difference.


This is the way your selenium driver interacts with the selenium server at a low level.  But you can forget all about that, because the APIs  abstract all that and you can enter commands in Java (or Ruby or PHP, etc.) that are similar to the familiar HTML commands.

For instance, the above session could be executed with the following Java commands

Selenium selenium = new DefaultSelenium("localhost", 4444, "*chrome", "http://one-shore.com/");
selenium.open("/contact")

Some commands, however, are not supported directly, or are an aggregate of multiple commands, such as verifyText which in java would look more like

verifyEquals("expected", selenium.getText(locator);
Advertisements

4 thoughts on “Interacting with SeleniumRC directly

  1. Did you notice the session id changes. from bb5439b87fec422282d2ec42a2611171 to 79eaade6ab7249a1ac05ac71eab60. This shows that the session 79*** is failed. Which would be nothing but your previous session.

    But i have a question, when the previous session fails, why are we not able to continue with the current session bb543*** Are these session ID inter-dependent?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s