Tag Archives: jquery locators

jQuery in selenium

we all love jQuery. so why not use jQuery in selenium? after all it locates elements. jQuery will make it easy, we just have to add a location strategy that uses jQuery to find elements. These two links helped me get started.

http://stackoverflow.com/questions/2814007/how-do-i-add-a-jquery-locators-to-selenium-remote-control

http://stackoverflow.com/questions/4185640/get-element-with-jquery-and-selenium-ide-1-0-8

Here are the steps i followed. I used selenium-server-standalone-2.2.0.jar downloaded from here.

Step 1:

Extract the jar. I used 7zip to extract.

Step 2:

Edit TestRunner.html inside the core folder.
Add the following as said in SO.

<script language="JavaScript" type="text/javascript" src="jquery.min.js"></script> <script language="JavaScript" type="text/javascript"> function openDomViewer() { var autFrame = document.getElementById('selenium_myiframe');         var autFrameDocument = new SeleniumFrame(autFrame).getDocument();         this.rootDocument = autFrameDocument;         var domViewer = window.open(getDocumentBase(document) + 'domviewer/domviewer.html');         return false; } </script>

And add the jquery-min.js in core folder.

Step 3:

Then add the location strategy to your selenium object as follows.

mySelenium.addLocationStrategy("jquery",
"var loc = locator; " +
"var attr = null; " +
"var isattr = false; " +
"var inx = locator.lastIndexOf('@'); " +


"if (inx != -1){ " +
"   loc = locator.substring(0, inx); " +
"   attr = locator.substring(inx + 1); " +
"   isattr = true; " +
"} " +


"var found = jQuery(inDocument).find(loc); " +
"if (found.length >= 1) { " +
"   if (isattr) { " +
"       return found[0].getAttribute(attr); " +
"   } else { " +
"       return found[0]; " +
"   } " +
"} else { " +
"   return null; " +
"}"
);

Note that this is java code.

Step 4:

Add the following function to user-extensions.js in core/scripts folder.

function jQuery (selector)
{
return selenium.browserbot.getUserWindow().jQuery(selector);
}

Step 5:

Now we need to update the jar file. To do that do something like this.
jar -uf selenium-server-standalone-2.2.0.jar core\TestRunner.html
jar -uf selenium-server-standalone-2.2.0.jar core\jquery.min.js
jar -uf selenium-server-standalone-2.2.0.jar core\scripts\user-extensions.js

Step 6:

That’s it. Just start the server as usual using java -jar selenium-server-standalone-2.2.0

Step 7:

To use jquery to select elements, use something like this.
myselenium.click("jquery=#some_id")

hope it helps.