With our first Selenium WebDriver script written and working, it's a good place to think about resources and methods for finding out about other features and definitions of the WebDriver class.
Why we write - to explore
In the Selenium script that I published previously, I decided to change the name of the WebDriver object from the standard "driver" that I've always seen to "page_item".
For me, this was very much driven by my understanding of what the WebDriver class represents, a representation of all the data and selectable methods available on a page.
It led to some interesting conversations on Twitter as well, which I found really useful ...
The truth is, I find it hard to actually find a good explanation of the WebDriver class which we're using there. But conceptually when I use it and the methods, I seem myself manipulating the page object with it.
Richard pointed out, that's useful as a start point, but you also need to understand that the WebDriver (and why it's often named "driver"), isn't just the page object, but it's the "thing" that manipulates the page as well.
As Andrew confirmed, to forget about the "driver functionality" in there is equivalent to thinking about a puppet, without thinking about the strings and marionette controls.
Searching the net, I've struggled, even on the Selenium homepage to find a definitive list of all the commands available. So plan B ...
WebDriver available parameters and functions
So, I've been somewhat frustrated trying to find a definitive list of what functions are available to be using WebDriver in Java. I can find a few pages and books (listed below) giving some useful functions, but not a definitive library list.
One method that I use to explore functionality comes through Eclipse, and I'm going to share this simple (but powerful) approach with you ...
Eclipse will attempt to autofill when you reference an object attribute/method. So with the code we've been using, if you type "page_info." you get a set of prompts for what's available - you can explore these, and even Google for more information.
The same happens when you explore the WebElement object "element." ...
This allows you to peel back and explore what features are available within these objects - have a go now. Once you find a suggested name, you can explore it by either Googling, or trying it out through exploration to see what happens.
Some useful resources
The following are some free online resources which can help you get started,
- JUnit webdriver tutorials on YouTube
- Site with some tutorials here to work through
- Hurricane Software's list of 15 commonly used WebDriver commands here
- Java For Testers - this is a really handy and relatively quick book which follows a similar pattern to my blog (more accurately I probably stole his style) - it explores in detail with examples you can follow along with. I have a couple of Java books at home, and typically they're lengthy and intimidating tomes. This got me where I needed with sufficient levels of detail - although I come from a C++ background.
- Selenium Simplified - I only found out about this book this week. Follows the same very strongly hands-on approach (which of course suits me fine), working through a lot of examples in detail.
Dave Haeffner wrote The Selenium Guidebook which came highly recommended, and includes video tutorials if you go for the full package. He also has a weekly newsletter you can subscribe to.