Extensions to Selenium have to be placed in a file named user-extensions.js as described in the reference guide. In version 0.6 the file is placed in th [selenium-home] directory, while in 0.7 it has to be placed in the [selenium-home]/core/scripts directory.

Adding a new option to dropdown and selecting it

The following action adds a new option to a given HTML dropdown and selects it:

 * Adds a new option to a dropdown list and selects that option.
 *  locator - locator for the dropdown element to add the option to
 *  text - the option value to set.
Selenium.prototype.doSelectNew = function(locator, text) {
     var element = this.page().findElement(locator);
     if (element.type.match(/select-+/i)) {
         element.options[element.options.length] = new Option(text, text);
         element.options[element.options.length - 1].selected = true;    


open /dropdown.html
verifySelected teammember Rick
selectNew teammember Bob
verifySelected teammember Bob

This particular excample loads a page, check that the option with label "Rick" is selected, adds an option with label and value 'Bob', and finally checks that the selected option is 'Bob'.

Look up a given cookie

The following locator locates and returns a given cookie on the document.

// Looks up a given cookie
PageBot.prototype.locateElementByCookie = function(text, inDocument) {
    var cookieMatch = new RegExp(";?" + text + "\=([^;]+)").exec(inDocument.cookie);
    if (null != cookieMatch) {        
        var retObj = new Object();
        retObj.value = retObj.textContent = cookieMatch[1];
        retObj.type = "";
        return retObj; 
    return null;


assertValue cookie=prefLanguage en-US

This examples checks that the cookie named 'prefLanguage' has the value 'en-US'.

Removing cookies

The following action removes cookie with a given name, belonging to a given path:

// The following examples try to give an indication of how Selenium can be extended with javascript.
function createCookie(doc, name,value, path,days)
        if (!path) {
            path = "/";        
        if (days)
                var date = new Date();
                var expires = "; expires="+date.toGMTString();
        else var expires = "";
        doc.cookie = name+"="+value+expires+"; path="+path;

 * Removes the cookie with the given name.
 *  text - the cookie name
 *  path - the cookie path
Selenium.prototype.doRemoveCookie = function(text, path) {    
    createCookie(this.page().currentDocument, text, "", path, -1);

I found the code for the createCookie on the Selenium forums. I just added a member function on the Selenium object prototype named doRemoveCookie which in effect creates a Selenium action 'removeCookie'.


removeCookie JSESSIONID /admin
removeCookie JSESSIONID /

In the example above, I call the removeCookie twice, one removing a JSESSIONID cookie set on the root (/) and one removing a JSESSIONID cookie set on the directory /admin. In some cases, I found that it would be relevant to have to give the path information as some servers set cookies with the same name on different paths.