Yes, the ‘2ndEdition’ on the back of the filename does mean that I am working on an updated version to update it for Selenium 2.
Current e-book purchasers can already download a beta of the 2nd edition while I finish updating it, from their re-download page.
I suspect that the 2nd edition will have a rebranding and possibly a name change to “Selenium RC Simplified” to reflect the rebranding of Selenium into.
Selenium 2 (overall version)
Selenium 2.1.0 (specific version)
Selenium RC (the Selenium API and RC Server)
WebDriver (the WebDriver API)
I will try to use this rebranding from now on when I refer to “Selenium”
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
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:
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
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.
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
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.
The 2nd Printing of Selenium Simplified should now start making its way out of the printer’s doors and start weaving its way towards book shops once again.
I’m going to try and minimise the amount of work I do on Selenium Simplified and concentrate on Selenium 2.0 and some other projects.
But short term plans for Selenium Simplified are as follows:
I will continue to update the e-book with any suggestions or comments that come in
I will figure out how to create a kindle version of the book, although formatting may not be as good as the pdf e-book
Thanks to everyone for all the positive feedback that I have received thus far. It really does seem to be helping a lot of people get started on the road to automation.
This changes all the spelling errors and grammar errors that I could find. (The e-book edition is always up to date with the latest changes I make, and when you buy the e-book you automatically have access to new revisions).
I’m just waiting for a proof copy to come through from the print on demand publisher so that I can get it back on the virtual Amazon shelves again. It is taking a little longer than I expected.
I have also set the book up to print on Lulu, so if you need an emergency source to buy it, before it becomes available on Amazon again, you can go direct to Lulu. I’m selling it with a 20% discount bringing the price to £19.99 because of all the trouble people faced. Hopefully Lulu postage doesn’t wipe out that saving for those of you not in the UK.
I still have work to do on it, so I have released it as a beta book in pdf format as an ebook (e-book ?), and at a bargain price too.
This means that:
it costs much less than it will when I finish it.
it may change a little before the final release.
I still need to write sections to cover CSS locators, and a bit more on JUnit (suites, command line usage, CI Integration). But the main sections exist (210 A4 pages of it, in fact).
I have written it as a tutorial so it walks the reader through everything the need to help them learn how to use Selenium for automation, using Java.
So this isn’t to teach the reader how to use the IDE (but I do cover that), this is to get the reader programming their automated tests in Java.
I wrote it for the beginner. So I assume no knowledge of programming or automated testing.
I started writing “Selenium Simplified” because at every conference I go to, I meet numerous people who tell me that they are not technical enough to do automation, or that they just don’t understand the articles on the web or in magazines about automation when code appears.
For some reason people freeze when faced with a blank window in an programming IDE and don’t know how to write code.
Others have written programming and automation books aimed at the beginner tester before:
Of the 15 names in the list I recognised just 7, so I can't claim to have a great knowledge of great programmers. But that just seeing Donald Knuth on the list made me want to read the book. And having read it, I recommend it to you.
Note: I've had to really reign myself in on this review so I don't savage the book. A lot of people have contributed to this book, and I assume they all worked hard. But I did not enjoy this book. I feel sad that I can not show this book any affection. Instead I recommend you read Lisa Crispin and Janet Gregory's "Agile Testing" instead.
One good thing about the title, it should mean that testers read the book. One bad thing about the title, other roles might not. But they should. This book provides a particularly good introduction and overview to the Agile process from a ‘test’ perspective.