Please post your Web Driver questions in official Web Driver forum

Tuesday, September 16, 2008

Testing HTML object using DOM and selenium

DOM is w3c standard for navigating through the objects of a structured doc,
Same can be used for exercising HTML/XML docs.

In HTML, each element is referred as an object hence text box, dropdown, radio
button etc are objects. These objects have properties (like max length in case
of text box etc) and methods. Herein properties of objects can be collected in
selenium through evaluation of java script and then these can be compared
against expected values. For example one can collect max length and size
properties of text box by evaluating java script through getEval function as
following -

selenium.getEval("var property = new Array(); property[0] =
window.document.getElementsByName('empNumber')[0].maxLength;" +

"property[1] = window.document.getElementsByName('empNumber')[0].size;

/**** I have explained evaluation of js in issue - 9211 ****/

Now individual properties can be collected in an string array as following -

String[] Textproperties = collectTextProperty.split(",");

And then this can be compared against expected values.

Below I have listed the HTML Element object and their properties which are
useful for testing. Please add on to this if I have missed any.

Anchor Object - href
Button Object – disabled
Form Object - elements[]
Frame Object – marginHeight, marginWidth
IFrame Object – height, marginHeight, marginWidth, width
Image Object – height, hspace, vspace, width, src
Checkbox Object - checked, disabled
FileUpload Object – disabled, value
Password Object – defaultValue, disabled, maxLength, size, value
Radio Object – checked, disabled, type, value
Submit Object – disabled, value
Text Object – defaultValue, disabled, maxLength, readOnly, size, value
Link Object – disabled, href
Meta Object – content
Option Object - defaultSelected, disabled, label, selected, text, value
Select Object - options[],disabled, length, multiple, size

For details on these properties look here -

Selenium also has prebuilt methods which can be used to test the position of
elements in a web page. These methods are as following -

getElementHeight(java.lang.String locator)
getElementPositionLeft(java.lang.String locator)
getElementPositionTop(java.lang.String locator)
getElementWidth(java.lang.String locator)

Using these methods one can build UI tests regarding position of elements.
Fork me on GitHub