Click Me
But the underlying source code could be:
<span>
<div>
<table>
<tbody>
<tr><td><strong onclick="javascript:clickme();">Click Me</strong></td></tr>
</tbody>
</table>
</div>
<span>
I might assume there is an anchor and I want to find the <a> element with the text 'Click Me'. By looking at the source code I can see that I actually want to find a <strong> element and click on it.
Just viewing the source code isn't always sufficient however. AJAX and Web 2.0 means that the source code gets changed in memory after it is loaded. So what is actually available in the DOM (and Selenium) might be different than what you see when viewing the source code.
So how do you see what Selenium sees? A simple solution is to write your Selenium code to get to a point in the program then print out the source code using Selenium. Selenium 1.0 and 2.0 both have methods to return the HTML source code as a string, which you can print.
The problem with this is that you might have to write a program to print the source. Then with the source, find the code you want to click. Then run the program so it clicks the element then prints the new source. Then run the program to click the first element, click the second element and print the source. For n steps this will take O(n^2) run time. Not very efficient.
So how can you view the dynamically changing source? The answer is in browser tools.
If you are using IE7, search for "microsoft dev toolbar". When you install it, it gives you development tools which can view the page in real time. If you are using IE8, the tool is built in. Just press F12 and it will display the development tools.
If you are using Firefox, install the Firebug extension.
If you are using Google Chrome, right click an element and select Inspect to bring up the development tools.
No comments:
Post a Comment