Archiv der Kategorie: Selenium/WebDriver

Highlight element in Internet Explorer (xPath)

Because missing proper xPath tool support in Internet Explorer, you have to Do It Yourself.
It feels dirty, but you get used to it 😉
1.) Open www.google.com in Internet Explorer & press F12 (to open developer tools)
2.) Open console-tab and execute following javascript:

var script = document.createElement("script");
script.src = "http://selenium.googlecode.com/git-history/f0245c5918a5ee98e25e47b3e08746eb7fd1a0ee/src/main/resources/core/xpath/javascript-xpath-0.1.11.js";
script.setAttribute("type","text/javascript");
document.body.appendChild(script);

If prompted, decide for „Show all content“ …
Internet-Explorer-xPath-warning
… than execute this javascript again. If you are prompted again, then execute the javascript again. Do this as long as the prompt appears.
Choose your xPath and execute:

var xPath= ".//*[@title='Google']";
var myElement = document.evaluate(xPath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
myElement.style.outline="3px solid red";
myElement.style.border="3px solid red";
myElement.style.opacity=1;
myElement.style.visibility="visible";
myElement.style.zIndex="2147483647";
myElement.style.overflow="visible";

Et voila, your evaluation of Internet Explorer’s xPath:
Internet-Explorer-xPath-success
My frist reader, who can add the scroll-to-that-element feature wins a backlink 😉
Notes:

  1. If no element was found, the thrown exceptions may differ from time to time and are somehow cryptic. You have to get used to that.
  2. This hack was tested with Internet Explorer 9 & 11
  3. Find similar hacks: https://autumnator.wordpress.com/2013/05/02/testing-xpath-and-css-locators-firepath-style-across-browsers/
  4. Supports working in test-automation, e.g. with Selenium

Performance test of integrated FirePath

I did a basic performance test for my favorite test-automation workflow with an integrated FirePath. I distinguished two phases: duration to start the Firefox Browser and duration for executing a very typical testprogram against a common website. And here are my results:
performanceTest FirePath
The starting of a WebDriver-driven Firefox with an integrated FirePath costs in average about 20 seconds more than the starting of a „naked“ Firefox. In contrast the execution of the typical testprogram doesn’t show a significant difference in velocity. The few seconds difference are maybe caused by performance differences by the webserver of the tested website, anyhow not significant …
To say it very clear: 20 seconds more in the starting phase is nothing compared to the time we spend to navigate a different Firefox (not the driven Firefox) until we finally reach the point of disturbance and finally start to debug the xPath there. So enhance your test-automation workflow with an integrated FirePath!

Better test-automation workflow with integrated FirePath

I appreciate the power of FirePath for coping with xPaths (compare XPath extensions for Chrome), so I like to have it debug-ready on the Firefox which I’m currently „driving“ while creating my testprograms. My ideal test-automation workflow: I set a breakpoint beside a suspicious line of code in my IDE, then I start the testprogram, the Firefox rises, I watch it clicking, typing, … and then the testprogram stops at my breakpoint. Many times a bad xPath is responsible for troubles, so now I like to rise the great FirePath on the halted Firefox and start debugging the bad xPath:
FirePathInWebDriver
And here we go:
Finding the proper combination of the versions of Selenium-Server, Firefox, Firebug (required for Firepath) and Firepath can be a nightmare. I’m heavily missing an official table regarding the version of Selenium-Server and its supported browser versions. After some hours, I found one of these working combinations:
* selenium-server 2.34.0
* Firefox 25
* Firebug 1.12.8b1
* FirePath 0.9.7.1
Download Firefox, Firebug and FirePath in a separate folder to clearly separate them from your current Firefox instance. You can then explicitly start them by code (this example in Java):

FirefoxBinary firefoxBinary = new FirefoxBinary(new File("C:\\Users\\michael\\Firefox v25\\firefox.exe"));
FirefoxProfile profile = new FirefoxProfile();
String pathToFirebugExtension = "C:\\Users\\michael\\Firefox v25 Extensions\\firebug-1.12.8b1-fx.xpi";
profile.addExtension(new File(pathToFirebugExtension));
String pathToFirepathExtension = "C:\\Users\\michael\\Firefox v25 Extensions\\firepath-0.9.7.1-fx.xpi";
profile.addExtension(new File(pathToFirepathExtension));
WebDriver driver = new FirefoxDriver(firefoxBinary, profile);

Then, when the Firefox stops at the breakpoint, you can press F12 (to open FireBug), click on the tab FirePath and start debugging the suspicious xPath.
My next article analyses the performance of the Firefox with the FirePath on his back: https://itkosmopolit.wordpress.com/2015/05/30/performance-test-of-integrated-firepath/