Can I use Selenium Simplified with Selenium 2?

Note: This post was originally written for Selenium 2.0rc2 I have updated it for Selenium 2.0.0 and IDE 1.0.12. And now with supporting video:

link to video Tutorial video on Selenium 2 with Selenium Simplified Book

Selenium has changed since I wrote Selenium Simplified.

Selenium Simplified targets the Selenium 1.0 API. This has not changed in Selenium 2.0

Selenium 2.0 bundles together the Selenium 1.0 server and API and the WebDriver code base.

I recently checked how compatible Selenium Simplified was with Selenium 2.0.0 and was pleasantly surprised.

This blog post describes how to follow the Selenium Simplified book using Selenium 2.0.0 and what you might expect to have happen.

Oh, and it works really well. You don’t have to change very much at all. Once you understand what to download, and how to use the correct jar versions in your build path and ant files, you will be fine.

I’ve structured this blog post so that it maps on to the structure of the book.

Create HTML suites from IDE

The Selenium IDE lets you create HTML suites and save them to html files so we don’t need to create these by hand any more.

Simply add the tests to the side of the ide and save as html.

Then you can run them with -htmlunit as described in the text.

-htmlunit works now

On page 24 there is a big warning saying do not use the -htmlunit to run selenese test suites.

Well this seems to work in Selenium 2 .0.0

I don’t recommend it as a good approach as I think you should move to coding your tests, but if you want to then you should be able to do this in Selenium 2.0.0 much more consistently than in 1.0.3

What to download to use with Selenium 2.0?

From the Selenium Download page

http://seleniumhq.org/download/

You can download either

  • the 0.9.2 build from the previous releases
  • the 1.0.3 build (in the Selenium Client Drivers list (listed in the table as a C# (Selenium RC)). This is the version that the book was written against.
  • the 2.0.0 Standalone Server and the Java 2.0.0 Client Driver (you need to download both if you want to follow through with the Selenium Simplified book, the Client Driver has the source code .jar and the standalone server has everything else)

Since everything works with Selenium 2.0.0 and Selenium 2.0.0 handles the most up to date versions of the browsers you are using, you should probably use this.

If you want to use Selenium 2.0.0 then the jars you need to add to your build paths and ant files is:

Then, any place in the text that talks about:

  • selenium-server.jar, instead use selenium-server-standalone-2.0.0.jar
    • e.g. java -jar selenium-server-standalone-2.0.0.jar

I ran through all the tests and all I did was change the jars that the project used. I used the 2.0.0 jar instead of 1.0.3 jars

SeleneseTestCase has been deprecated

SeleneseTestCase has been deprecated in Selenium 2.0 so you will see it scored through when you work with it using the Selenium 2 jars. This isn’t a problem as Selenium Simplified moves you away from this very quickly.

SaveAs from the IDE instead of view code

On page 38, in previous versions of the IDE you could view source in different languages. Now the view source is always html. You have to saveAs the test case in different formats. So saveAs the test case into Junit4 format.

Attach source-code

Page 57 starts to describe the process of attaching the selenium source code.

The source-code is contained in the Java Client download as selenium-java-2.0.0-srcs.jar, so attach this to your Java project to see the Selenium source-code in the IDE.

Firefox and IE don’t work!

If you are using Selenium 1.0.3 then Firefox 4 probably doesn’t work. I was using Firefox 3.0 and 3.5 with the book

The instructions here might help http://www.qaautomation.net/?p=245 If you want to use early versions of Selenium with Firefox 4.

You could also use one of the compatibility images from Microsoft and install selenium, Eclipse etc. on that – then run against IE6 or IE7, or install a previous version of Firefox.

http://www.microsoft.com/downloads/en/details.aspx?familyid=21eabb90-958f-4b64-b5f1-73d0a413c8ef&displaylang=en

You need Virtual PC to run them

http://www.microsoft.com/windows/virtual-pc/default.aspx

Or, use Selenium 2.0.0 with Firefox 4 or Firefox 5 – this seems to work fine.

I had issues on my Windows 7 machine and running IE 9. I recommend running against Firefox with the Selenium Simplified book. Or running against IE through the virtual machines.

Test Amendments

There are some tests that need to be amended to get working since the underlying apps have changed since they were created.

com.eviltester.seleniumtutorials

MySeleniumTestWithScreenshot.java

Google has changed since the book was released. The next edition will only use pages completely under the authors control.

The following tests will achieve the required results for pages 71 – 76

package com.eviltester.seleniumtutorials;

import com.thoughtworks.selenium.*;

public class MySeleniumTestWithScreenshot extends SeleneseTestCase {

 public MySeleniumTestWithScreenshot(){
  setCaptureScreenShotOnFailure(true);
 }

 public void setUp() throws Exception {
  setUp("http://www.compendiumdev.co.uk", "*firefox");
 }

 public void testAsserts_for_wrong_value() throws Exception {

  selenium.open("/selenium/search.php");
  selenium.type("q", "wrongvalue");
  selenium.click("btnG");
  selenium.waitForPageToLoad("30000");
  assertEquals("selenium-rc - Google Search", selenium.getTitle());
  assertEquals("selenium-rc", selenium.getValue("q"));
 } 

 public void testVerifys_for_wrong_value() throws Exception {

  selenium.open("/selenium/search.php");
  selenium.type("q", "wrongvalue");
  selenium.click("btnG");
  selenium.waitForPageToLoad("30000");
  // verify will not trigger screenshots
  verifyEquals("selenium-rc - Google Search", selenium.getTitle());
  verifyEquals("selenium-rc", selenium.getValue("q"));
 } 

}

All I changed was the base url in setup and the selenium.open links

com.eviltester.seleniumtutorials.chap16

combinedMatches

page 155 CSS selectors

when combining selectors with , the results are not guaranteed to come back in the order of the matched selectors so the test below fails.

@Test
public void combinedMatches(){
 assertEquals("A paragraph of text",selenium.getText("css=p, title"));
 assertEquals("Basic Web Page Title",selenium.getText("css=title, p"));
 assertEquals(3, getCSSCount("title, p"));
 assertEquals(3, getCSSCount("p, title"));
 assertEquals(1, getCSSCount("title"));
 assertEquals(2, getCSSCount("p"));
}

in package com.eviltester.seleniumtutorials.chap16;

Fails on the second assert in Firefox 4.

Interestingly this is different behaviour than the FireFinder plugin in Firefox 4 which would have the first assert fail and the second assert pass.

Using the combining operator the order of the matched items can not be guaranteed. Ignore this section of the text and comment out the first two lines of the test.

com.eviltester.seleniumtutorials.chap20

ShowHTMLOfCombo1WithGetEval

Update: 27/06/2011

I initially thought this was a problem with the getEval. After investigating. It seems to me that a problem exists with assignId using Firefox. The code in the book works fine with *googlechrome

I have raised a bug against this http://code.google.com/p/selenium/issues/detail?id=2121

The getEval does work. If you use “window.document.getElementById(‘combo1’).innerHTML;” This still demonstrates the intent of the test.

If you want to use assignId on firefox then you might have to use getEval to ‘simulate it’ e.g.

Instead of:

selenium.assignId(“xpath//form”, “form1”);

I did:

String result = selenium.getEval(“window.document.forms[0].setAttribute(‘id’,’form1′);”);

To achieve the same effect.

Summary

Pretty much everything worked. This shows that the Selenium team have done a really good job of backwards compatibility.

I suspect that some of the above issues will be resolved by future updates to the drivers.

Once you are past the initial setup sections of the text. You should have no real problems. Unfortunately the initial setup sections is when you need most help, so if you can’t follow the instructions here then email me and I’ll try to help.

This entry was posted in Migrating to WebDriver, Selenium Simplified, Selenium Simplified Blog, Selenium-RC, WebDriver. Bookmark the permalink.

2 Responses to Can I use Selenium Simplified with Selenium 2?

  1. sumit kher says:

    I am comparatively new to selenium and played a little with selenium IDE, and trying to do with selenium rc. I am baffled to use the scripting language there. Can you tell me what is the most used language in selenium across industries? And also I came across this course [removed-by-moderator] os selenium automated web browser testing is this good? If someone does in Java and he joins a company where everyone does in ruby, then it’ll be a pain to learn ruby again. And also it would be great if you address any comparison about the available languages like (perl, python, ruby, java etc.) or tell me any other guidance would really appreciate help and also i would like to thank for all the information you are providing.

    • Alan says:

      I have approved this comment after amending a spam course link out.

      Why? Because I have my own training courses and I think they are clear what they offer and have free videos so if you are unclear about if a course is good for you or not, you want to review it. I make that possible. If the other course doesn’t then don’t do it.

      Ruby is not a pain to learn if you know Java. Once you know a programming language fairly well, you can learn others. Just put the effort in.

      I mainly see Selenium WebDriver automation done using Java, .net and Ruby.

Leave a Reply

Your email address will not be published. Required fields are marked *