This article will give the developers and testers who use Java selenium script for Browser Simulations and automation for IE browser to capture HTTP logs using HTTPWatch Plug-in
HTTP Watch comes with inbuilt API support to integrate with selenium scripts written in C# or PHP scripts . But unfortunately they don’t have Support for JAVA.
The solution given here is to use Java COM bridge and invoke HTTP Watch plugin API from Java based selenium scripts.
Using this article you would learn how HttpWatch plug-in which component can be easily interfaced with Java code and then executed via selenium script.
2. Selenium Automation with HTTPWatch Plugin
Selenium framework allows to simulate real browser like Internet explorer,
Chrome or Firefox and automate the execution of user navigations via scripts in
the browser. There are enormous articles, tutorials available on automation with
selenium. However there is focus given for capturing web page performance
KPIs,page load times & Browser HTTP network logs during such Selenium test
runs.
Currently there is no Java API available to interface Http Watch plug-in API.
solution given in this article show how to use HTTP Watch browser plug-in
,collect logs and measure page performance with Java .
This document would help developers/Testers to write to use Java
programming for selenium scripts with capturing HTTP log data using
HTTPWatch plugin & capture performance KPI of pages and automate in
detection of web performance issues.
Selenium Automation with HTTPWatch Plug-in Sandeep.tol@outlook.com 2
3. About HTTPWatch Plug-in
HttpWatch browser plug-in helps to measure Performance of web pages like Page
Load time, Number of Javaacript files, Number of CSS files, Number of HTTP
Errors, Number of requests etc in Internet Explorer or Firefox . HTTP Watch is
external plug-in available in Basic & professional edition for Internet explorer to
capture HTTP logs. One can also buy Professional Edition that comes with more
features for detailed analysis. Free Basic edition is enough for most of the cases!
Selenium Automation with HTTPWatch Plug-in Sandeep.tol@outlook.com 3
4. Java Interfacing for Http Watch Plugin
HTTP Watch comes with inbuilt API support to integrate with selenium scripts written in C# or PHP
scripts . Refer http://apihelp.httpwatch.com/#Automation%20Overview.html
But unfortunately we don’t have API written for JAVA. The solution is to use Java COM bridge and invoke
HTTP Watch plugin API from Java selenium scripts.
Selenium Automation with HTTPWatch Plug-in Sandeep.tol@outlook.com 4
HttpWatch Plugin
-Record
-Stop
-Log
Java Selenium Code
JavaComBridge
Pages Summary
-Load Times, URL Data
- Content Sizes (CSS/JSS,IMG
sizes) , Save Log files
HWL Files
( Log files)
Java Based HttpWatch Automation with
Selenium
Controller
5. Step 1 :
Download and install HTTPwatch plug-in for IE in your system. You can download here download
Ensure that latest Install JRE or JDK is available on system
Step 2 :
Download COM Bridge https://java.net/projects/com4j/downloads and unzip files . There are few other
commercial java com bridge available. But I found the above one is good and efficient . You can also refer
to tutorial on converting various COM objects into Java interfaces here.
https://com4j.java.net/tutorial.html
Step 3 :
Open “Command Prompt” and navigate to the folder where you have extracted Com4J files .
Copy HTTPWatchx64.dll ( for 32 bit Windows it would be httpwatch.dll) from HTTPwatch plugin
installation folder to same folder where COM4J files are extracted. On Windows the HTTPwatch would be
installed in C:Program Files (x86)HttpWatch
Selenium Automation with HTTPWatch Plug-in Sandeep.tol@outlook.com 5
6. Step 4 :
Convert COM component to Java API
. Execute following command
Java – jar tlbimp.jar -o <outputFolder> –p <packagename> DLL file
Below command would generate files in “output” folder
Java – jar tlbimp.jar -o outputFolder –p com.httpwatch httpwatchx64.dll
Selenium Automation with HTTPWatch Plug-in Sandeep.tol@outlook.com 6
Generated Java Interface files
for HTTPWatch Plugin
7. Java Selenium Code with Http Watch Plugin
Include the httpwatch API that was generated into your selenium project. Below is
the code used in Ecipse IDE after importing httpWatch API classes.
Selenium Automation with HTTPWatch Plug-in Sandeep.tol@outlook.com 7
8. Java Selenium Code with Http Watch Plugin
Selenium Automation with HTTPWatch Plug-in Sandeep.tol@outlook.com 8
public class SeleniumIEHttpwatch {
public static void main(String[] args) {
InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
WebDriver driver = new InternetExplorerDriver(capabilitiesIE);
IController controller = ClassFactory.createController();
driver.manage().window().maximize();
// And now use this to visit Google
driver.get("http://www.google.com");
// Check the title of the page
String title = driver.getTitle();
// Creae Plugin instance
Plugin plugin = controller.attachByTitle(title);
// Do some transaction in page e.g Search
//WebElement element = driver.findElement(By.name("q"));
// Enter something to search for
element.sendKeys("Cheese!");
//start recording the data for transaction
plugin.record();
// Now submit the form. WebDriver will find the form for us from the element
element.submit();
controller.wait_(plugin, -1);
//stop recording for transaction
plugin.stop();
// Save the log file
plugin.log().save("C:/<local path>/googletest.hwl");
} }
9. We can also Print Performance metrics of page
Selenium Automation with HTTPWatch Plug-in Sandeep.tol@outlook.com 9
/*Get the Summary of Performance KPI*/
Summary summary = plugin.log().pages(0).entries().summary();
System.out.println(" Summary Time" + summary.time());
System.out.println( "Total time to load page (secs): " + summary.time());
System.out.println( "Number of bytes received on network: " + summary.bytesReceived());
System.out.println( "HTTP compression saving (bytes): " + summary.compressionSavedBytes());
System.out.println( "Number of round trips: " + summary.roundTrips());
System.out.println( "Number of errors: " + summary.errors().count());
The Execution Console Output will look like this
10. Auto generated HWL File would like this. You can also
export this content to CSV format
Selenium Automation with HTTPWatch Plug-in Sandeep.tol@outlook.com 10
11. If you would like to simulate the HTTP Watch with Mozilla Firefox . Below is the
code .There are few minor modifications needed to invoke HTTPWatch plugin .
Please note the HTTPwatch plugin only works for Firefox version 35 and
below
FirefoxProfile profile = new FirefoxProfile();
// FireBug,NetExport,Modify Headers xpi
File httpwatch = new File("C:Program Files (x86)HttpWatchFirefox");
profile.setEnableNativeEvents(false);
try {
profile.addExtension(httpwatch);
} catch (IOException err) {
System.out.println(err);
}
WebDriver driver = new FirefoxDriver(profile);
driver.get("http://www.google.com");
String title = driver.getTitle();
System.out.println(" Title1 - " + title);
Plugin plugin = controller.attachByTitle(title);
Rest of the code is same for Plugin recording and transaction simulationss
Selenium Automation with HTTPWatch Plug-in Sandeep.tol@outlook.com 11
12. Download Code Project from GiHub
https://github.com/sandeeptol1/SampleJavaHttpWatchAutomation
Software Test Automation is brining lot of innovative tools and techniques to
automate manual testing and reduce testing efforts. Especially in Agile Projects or
Next gen architectures, automation is the key to successful project
implementations. Many Enterprises are using automated scripts for Junit tests,
Selenium Web browser Tests in their CI/CD ( Continuous Integration)
frameworks to reduce cycle time and manual efforts on Unit testing, Browser
testing & regression testing . Automation is “mantra” in nexgen architecture.
Selenium can be used for automating regression tests and browser based tests or
Website comparison tests against competition. Using above techniques httplogs
can also be collected during such tests . This data can be stored in some database
or files and can be shown in dashboards to view website performance
References
HTTPWatch API http://apihelp.httpwatch.com/#Automation%20Overview.html
COM 4 Java https://com4j.java.net/tutorial.html
Selenium Webdriver http://www.seleniumhq.org/projects/webdriver/
Selenium Automation with HTTPWatch Plug-in Sandeep.tol@outlook.com 12
13. About the Author
Sandeep Tol is Senior Architect at Wipro, with technology experience spanning
across Java J2EE applications, Web Portals, SOA platforms, Digital, Mobile, Cloud
architectures & Performance Engineering .Certified in TOGAF 9, written various
whitepapers published on architecture and quality governance.
Has Special Interest in Test Automation and Performance Engineering .Developed
and implemented various performance engineering automation tools,’ left shift
strategies to various customers
https://www.linkedin.com/in/sandeeptol
email: sandeep.tol@outlook.com
Selenium Automation with HTTPWatch Plug-in Sandeep.tol@outlook.com 13