SlideShare a Scribd company logo
July 2016
Using HttpWatch Plug-in with
Selenium Automation in Java
Sandeep Tol
Senior Architect, Wipro
HTTPWatch Plugin automation with Java
Sandeep Tol (sandeep.tol@outlook.com) Page 2
Using HttpWatch Plug-in with Selenium
Automation in Java
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.
This article will give the developers and testers to use Java programming for capturing IE
browser HTTP logs using HTTP Watch Plug-in (V10) , in Selenium scripts
This article would help developers/Testers to write selenium scripts with capturing HTTP log data
using HTTPWatch plugin, capture performance KPI of pages and automate in detection of web
performance issues. Automation is key to successful implementation of Next gen architecture that
uses Devops or Agile methods .Using selenium for web applications ,we can automate testing and
measure ,detect web page performance issues early in lifecycle and save manual tasking effort and
reduce performance defect Developer/Performance engineer can work on fixing the issues quickly &
achieve the agile benefits.
Key Takeaways from this article
 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
perfromance.
 Use this knowledge to Automate performance analysis and testing for Agile Projects
 Learn developing Java selenium scripts for Internet Explorer and Firefox
 You can write a script to automate simulation of Http Watch plugin for Recording ,Stopping
and Logging for transactions
 Learn how to measure webpage performance java /selenium code
 Build or enhance existing automation frameworks for Performance analysis
 Download the code from GitHub to start running sample
 You would gain knowledge on developing Java interfaces for Microsoft Browser plugins with
Java COM bridge
About HttpWatch
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. However for detecting basic webpage issues, free edition is
enough!
It would help Performance Architects/Engineers/Developers to analyze the Client Side performance
Issues and fix them . HTTP Watch is best available plug-in to captures network traffic with Internet
Explorer. It’s very easy to use and one can manually capture detailed Network logs for all web page
transactions. The Performance KPI that you can measure include
HTTPWatch Plugin automation with Java
Sandeep Tol (sandeep.tol@outlook.com) Page 3
 Onload time,
 Tmechart View ( Which objects take time in loading, Sequential/Parallel calls, Ajax calls)
 Bytes Sent
 Bytes Received,
 Number of HTTP requests made from Browser,
 Server Time and Client Time ( With manual introspection)
 HTTP Request Types ( GET, POST, 200 ,304,404 etc)
 HTTP Errors.
 Size of components ( Images, CSS, JS, Flash etc)
 HTTP Headers data / Request Data/ JSON request Data/ Content sent & received in browser (
Professional Edition)
 Warnings ( Professional Edition)
Picture 1: Screenshot showing HttpWatch Network logs captured Manually in IE browser
But when we talk on real browser automation using selenium, we need mechanisms to capture
such browser HTTP logs in automated fashion.
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 they don’t have API written for JAVA. There are no samples or articles
available to use Httpwtach with Java interface.
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.
The solution is to use Java COM bridge and invoke HTTP Watch plugin API from Java based
selenium scripts.
HTTPWatch Plugin automation with Java
Sandeep Tol (sandeep.tol@outlook.com) Page 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
Picture 2: Component View of interfacing with Java
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
HTTPWatch Plugin automation with Java
Sandeep Tol (sandeep.tol@outlook.com) Page 5
Picture 3: Screenshot of folder structure
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
Picture 4: Screenshot of command Line
This will create Java API classes like below
Picture 5: Screenshot of files generated
Now you can use these API in Selenium to automate httpwatch log capturing and displaying
performance metrics
Java Selenium Code with Http Watch Plugin
Now you can use these API in Selenium to automate httpwatch log capturing and displaying
performance metrics .
Include the httpwatch API that was generated into selenium project. Below is the code for simulating
IE browser with HTTPWatch
package myauto;
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
HTTPWatch Plugin automation with Java
Sandeep Tol (sandeep.tol@outlook.com) Page 6
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import com.httpwatch.*;
public class SeleniumIEHttpwatch {
public static void main(String[] args) {
// Create a new instance of the Firefox driver
// Notice that the remainder of the code relies on the interface,
// not the implementation.
File file = new File("C:/<path to IE Driver>/IEDriverServer.exe");
System.setProperty("webdriver.ie.driver", file.getAbsolutePath());
DesiredCapabilities capabilitiesIE = DesiredCapabilities.internetExplorer();
capabilitiesIE.setCapability(
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");
// Alternatively the same thing can be done like this
// driver.navigate().to("http://www.google.com");
// Check the title of the page
System.out.println("Page title is: " + driver.getTitle());
String title = driver.getTitle();
Plugin plugin = controller.attachByTitle(title);
// Find the text input element by its name
//WebElement element = driver.findElement(By.name("q"));
WebElement element =
driver.findElement(By.xpath("//input[@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();
/*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());
// Check the title of the page
System.out.println("Page title is: " + driver.getTitle());
HTTPWatch Plugin automation with Java
Sandeep Tol (sandeep.tol@outlook.com) Page 7
// Save the log file
plugin.log().save("C:/Users/sande_000/Desktop/PE Work/sandytest.hwl");
// Google's search is rendered dynamically with JavaScript.
// Wait for the page to load, timeout after 10 seconds
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("cheese!");
}
});
// Should see: "cheese! - Google Search"
System.out.println("Page title is: " + driver.getTitle());
//Close the browser
driver.quit();
}
}
The Execution Console Output will look like this
Auto generated HWL File would like this. You can also export this content to CSV format
Picture 6: Auto generated HWL file
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
(v10) only works for Firefox version 35 and below
package myauto;
import java.io.File;
import java.io.IOException;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
HTTPWatch Plugin automation with Java
Sandeep Tol (sandeep.tol@outlook.com) Page 8
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;
import com.httpwatch.*;
public class SeleniumFirefoxHttpWatch {
public static void main(String[] args) {
// Create a new instance of the Firefox driver
// Notice that the remainder of the code relies on the interface,
// not the implementation.
IController controller = ClassFactory.createController();
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.manage().window().maximize();
// And now use this to visit Google
driver.get("http://www.google.com");
// Alternatively the same thing can be done like this
// driver.navigate().to("http://www.google.com");
String title = driver.getTitle();
System.out.println(" Title1 - " + title);
// Plugin plugin = controller.firefox().attach("default");
Plugin plugin = controller.attachByTitle(title);
// Find the text input element by its name
WebElement element = driver.findElement(By.name("q"));
// Enter something to search for
element.sendKeys("Cheese!");
plugin.record();
// Now submit the form. WebDriver will find the form for us from the
// element
element.submit();
controller.wait_(plugin, -1);
plugin.stop();
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());
// Check the title of the page
System.out.println("Page title is: " + driver.getTitle());
// Google's search is rendered dynamically with JavaScript.
// Wait for the page to load, timeout after 10 seconds
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>()
{
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("cheese!");
}
HTTPWatch Plugin automation with Java
Sandeep Tol (sandeep.tol@outlook.com) Page 9
});
// Should see: "cheese! - Google Search"
System.out.println("Page title is: " + driver.getTitle());
// Close the browser
driver.quit();
}
}
Download Article Project from GiHub
https://github.com/sandeeptol1/SampleJavaHttpWatchAutomation
Conclusion
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
1. HTTPWatch API http://apihelp.httpwatch.com/#Automation%20Overview.html
2. COM 4 Java https://com4j.java.net/tutorial.html
3. Selenium Webdriver http://www.seleniumhq.org/projects/webdriver/
About the Author
Sandeep Tol is Senior Architect at Wipro, with 17 years of 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

More Related Content

What's hot (20)

Software Testing Techniques: An Overview
Software Testing Techniques: An Overview
QA InfoTech
 
Testing Tool Evaluation Criteria
Testing Tool Evaluation Criteria
basma_iti_1984
 
Performance Requirement Gathering
Performance Requirement Gathering
Atul Pant
 
Basic Guide to Manual Testing
Basic Guide to Manual Testing
Hiral Gosani
 
LoadRunner Performance Testing
LoadRunner Performance Testing
Atul Pant
 
Automated Testing with Agile
Automated Testing with Agile
Ken McCorkell
 
Software testing
Software testing
Omar Al-Bokari
 
Testing Tools with AI
Testing Tools with AI
VodqaBLR
 
Test automation framework
Test automation framework
QACampus
 
Test Automation Frameworks Using Selenium | Edureka
Test Automation Frameworks Using Selenium | Edureka
Edureka!
 
Test Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.com
Idexcel Technologies
 
Cross browser testing
Cross browser testing
Perfecto Mobile
 
Manual testing
Manual testing
vigneshasromio
 
Security Testing Training With Examples
Security Testing Training With Examples
Alwin Thayyil
 
Security Checkpoints in Agile SDLC
Security Checkpoints in Agile SDLC
Rahul Raghavan
 
Agile Qa Framework Jacky Wu
Agile Qa Framework Jacky Wu
Jacky Wu
 
Selenium ppt
Selenium ppt
Anirudh Raja
 
Introduction & Manual Testing
Introduction & Manual Testing
VenkateswaraRao Siddabathula
 
Automation Testing
Automation Testing
Sun Technlogies
 
Test Automation Strategies For Agile
Test Automation Strategies For Agile
Naresh Jain
 
Software Testing Techniques: An Overview
Software Testing Techniques: An Overview
QA InfoTech
 
Testing Tool Evaluation Criteria
Testing Tool Evaluation Criteria
basma_iti_1984
 
Performance Requirement Gathering
Performance Requirement Gathering
Atul Pant
 
Basic Guide to Manual Testing
Basic Guide to Manual Testing
Hiral Gosani
 
LoadRunner Performance Testing
LoadRunner Performance Testing
Atul Pant
 
Automated Testing with Agile
Automated Testing with Agile
Ken McCorkell
 
Testing Tools with AI
Testing Tools with AI
VodqaBLR
 
Test automation framework
Test automation framework
QACampus
 
Test Automation Frameworks Using Selenium | Edureka
Test Automation Frameworks Using Selenium | Edureka
Edureka!
 
Test Automation Framework Design | www.idexcel.com
Test Automation Framework Design | www.idexcel.com
Idexcel Technologies
 
Security Testing Training With Examples
Security Testing Training With Examples
Alwin Thayyil
 
Security Checkpoints in Agile SDLC
Security Checkpoints in Agile SDLC
Rahul Raghavan
 
Agile Qa Framework Jacky Wu
Agile Qa Framework Jacky Wu
Jacky Wu
 
Test Automation Strategies For Agile
Test Automation Strategies For Agile
Naresh Jain
 

Similar to Using HttpWatch Plug-in with Selenium Automation in Java (20)

ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008
Caleb Jenkins
 
Developing Java Web Applications
Developing Java Web Applications
hchen1
 
Selenium.pptx
Selenium.pptx
Pandiya Rajan
 
Selenium WebDriver FAQ's
Selenium WebDriver FAQ's
Praveen Gorantla
 
Qa process
Qa process
Aila Bogasieru
 
Qa process
Qa process
Aila Bogasieru
 
Programming Server side with Sevlet
Programming Server side with Sevlet
backdoor
 
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Ondřej Machulda
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
vstorm83
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium Successfully
SpringPeople
 
Implementing auto complete using JQuery
Implementing auto complete using JQuery
Bhushan Mulmule
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
chrisb206 chrisb206
 
Web II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side development
Randy Connolly
 
Yii php framework_honey
Yii php framework_honey
Honeyson Joseph
 
Play framework
Play framework
sambaochung
 
Html5 - Awesome APIs
Html5 - Awesome APIs
Dragos Ionita
 
Selenium
Selenium
David Rajah Selvaraj
 
Introduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and Silverlight
Peter Gfader
 
AspMVC4 start101
AspMVC4 start101
Rich Helton
 
Ta Javaserverside Eran Toch
Ta Javaserverside Eran Toch
Adil Jafri
 
ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008
Caleb Jenkins
 
Developing Java Web Applications
Developing Java Web Applications
hchen1
 
Programming Server side with Sevlet
Programming Server side with Sevlet
backdoor
 
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Ondřej Machulda
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
vstorm83
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium Successfully
SpringPeople
 
Implementing auto complete using JQuery
Implementing auto complete using JQuery
Bhushan Mulmule
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
chrisb206 chrisb206
 
Web II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side development
Randy Connolly
 
Html5 - Awesome APIs
Html5 - Awesome APIs
Dragos Ionita
 
Introduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and Silverlight
Peter Gfader
 
AspMVC4 start101
AspMVC4 start101
Rich Helton
 
Ta Javaserverside Eran Toch
Ta Javaserverside Eran Toch
Adil Jafri
 
Ad

Recently uploaded (20)

Introduction to Typescript - GDG On Campus EUE
Introduction to Typescript - GDG On Campus EUE
Google Developer Group On Campus European Universities in Egypt
 
Analysis of the changes in the attitude of the news comments caused by knowin...
Analysis of the changes in the attitude of the news comments caused by knowin...
Matsushita Laboratory
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
Muhammad Rizwan Akram
 
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
Edge AI and Vision Alliance
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
PyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent Integration
barqawicloud
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
Artificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdf
OnBoard
 
Data Validation and System Interoperability
Data Validation and System Interoperability
Safe Software
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
Edge AI and Vision Alliance
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
Safe Software
 
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Alliance
 
Providing an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME Flow
Safe Software
 
Kubernetes Security Act Now Before It’s Too Late
Kubernetes Security Act Now Before It’s Too Late
Michael Furman
 
Reducing Conflicts and Increasing Safety Along the Cycling Networks of East-F...
Reducing Conflicts and Increasing Safety Along the Cycling Networks of East-F...
Safe Software
 
Analysis of the changes in the attitude of the news comments caused by knowin...
Analysis of the changes in the attitude of the news comments caused by knowin...
Matsushita Laboratory
 
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
War_And_Cyber_3_Years_Of_Struggle_And_Lessons_For_Global_Security.pdf
biswajitbanerjee38
 
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
ENERGY CONSUMPTION CALCULATION IN ENERGY-EFFICIENT AIR CONDITIONER.pdf
Muhammad Rizwan Akram
 
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
“From Enterprise to Makers: Driving Vision AI Innovation at the Extreme Edge,...
Edge AI and Vision Alliance
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
PyData - Graph Theory for Multi-Agent Integration
PyData - Graph Theory for Multi-Agent Integration
barqawicloud
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
Artificial Intelligence in the Nonprofit Boardroom.pdf
Artificial Intelligence in the Nonprofit Boardroom.pdf
OnBoard
 
Data Validation and System Interoperability
Data Validation and System Interoperability
Safe Software
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
“Why It’s Critical to Have an Integrated Development Methodology for Edge AI,...
Edge AI and Vision Alliance
 
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Seminar: Perspectives on Passkeys & Consumer Adoption.pptx
FIDO Alliance
 
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
Safe Software
 
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Seminar: Authentication for a Billion Consumers - Amazon.pptx
FIDO Alliance
 
Providing an OGC API Processes REST Interface for FME Flow
Providing an OGC API Processes REST Interface for FME Flow
Safe Software
 
Kubernetes Security Act Now Before It’s Too Late
Kubernetes Security Act Now Before It’s Too Late
Michael Furman
 
Reducing Conflicts and Increasing Safety Along the Cycling Networks of East-F...
Reducing Conflicts and Increasing Safety Along the Cycling Networks of East-F...
Safe Software
 
Ad

Using HttpWatch Plug-in with Selenium Automation in Java

  • 1. July 2016 Using HttpWatch Plug-in with Selenium Automation in Java Sandeep Tol Senior Architect, Wipro
  • 2. HTTPWatch Plugin automation with Java Sandeep Tol ([email protected]) Page 2 Using HttpWatch Plug-in with Selenium Automation in Java 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. This article will give the developers and testers to use Java programming for capturing IE browser HTTP logs using HTTP Watch Plug-in (V10) , in Selenium scripts This article would help developers/Testers to write selenium scripts with capturing HTTP log data using HTTPWatch plugin, capture performance KPI of pages and automate in detection of web performance issues. Automation is key to successful implementation of Next gen architecture that uses Devops or Agile methods .Using selenium for web applications ,we can automate testing and measure ,detect web page performance issues early in lifecycle and save manual tasking effort and reduce performance defect Developer/Performance engineer can work on fixing the issues quickly & achieve the agile benefits. Key Takeaways from this article  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 perfromance.  Use this knowledge to Automate performance analysis and testing for Agile Projects  Learn developing Java selenium scripts for Internet Explorer and Firefox  You can write a script to automate simulation of Http Watch plugin for Recording ,Stopping and Logging for transactions  Learn how to measure webpage performance java /selenium code  Build or enhance existing automation frameworks for Performance analysis  Download the code from GitHub to start running sample  You would gain knowledge on developing Java interfaces for Microsoft Browser plugins with Java COM bridge About HttpWatch 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. However for detecting basic webpage issues, free edition is enough! It would help Performance Architects/Engineers/Developers to analyze the Client Side performance Issues and fix them . HTTP Watch is best available plug-in to captures network traffic with Internet Explorer. It’s very easy to use and one can manually capture detailed Network logs for all web page transactions. The Performance KPI that you can measure include
  • 3. HTTPWatch Plugin automation with Java Sandeep Tol ([email protected]) Page 3  Onload time,  Tmechart View ( Which objects take time in loading, Sequential/Parallel calls, Ajax calls)  Bytes Sent  Bytes Received,  Number of HTTP requests made from Browser,  Server Time and Client Time ( With manual introspection)  HTTP Request Types ( GET, POST, 200 ,304,404 etc)  HTTP Errors.  Size of components ( Images, CSS, JS, Flash etc)  HTTP Headers data / Request Data/ JSON request Data/ Content sent & received in browser ( Professional Edition)  Warnings ( Professional Edition) Picture 1: Screenshot showing HttpWatch Network logs captured Manually in IE browser But when we talk on real browser automation using selenium, we need mechanisms to capture such browser HTTP logs in automated fashion. 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 they don’t have API written for JAVA. There are no samples or articles available to use Httpwtach with Java interface. 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. The solution is to use Java COM bridge and invoke HTTP Watch plugin API from Java based selenium scripts.
  • 4. HTTPWatch Plugin automation with Java Sandeep Tol ([email protected]) Page 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 Picture 2: Component View of interfacing with Java 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
  • 5. HTTPWatch Plugin automation with Java Sandeep Tol ([email protected]) Page 5 Picture 3: Screenshot of folder structure 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 Picture 4: Screenshot of command Line This will create Java API classes like below Picture 5: Screenshot of files generated Now you can use these API in Selenium to automate httpwatch log capturing and displaying performance metrics Java Selenium Code with Http Watch Plugin Now you can use these API in Selenium to automate httpwatch log capturing and displaying performance metrics . Include the httpwatch API that was generated into selenium project. Below is the code for simulating IE browser with HTTPWatch package myauto; import java.io.File; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver;
  • 6. HTTPWatch Plugin automation with Java Sandeep Tol ([email protected]) Page 6 import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; import com.httpwatch.*; public class SeleniumIEHttpwatch { public static void main(String[] args) { // Create a new instance of the Firefox driver // Notice that the remainder of the code relies on the interface, // not the implementation. File file = new File("C:/<path to IE Driver>/IEDriverServer.exe"); System.setProperty("webdriver.ie.driver", file.getAbsolutePath()); DesiredCapabilities capabilitiesIE = DesiredCapabilities.internetExplorer(); capabilitiesIE.setCapability( 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"); // Alternatively the same thing can be done like this // driver.navigate().to("http://www.google.com"); // Check the title of the page System.out.println("Page title is: " + driver.getTitle()); String title = driver.getTitle(); Plugin plugin = controller.attachByTitle(title); // Find the text input element by its name //WebElement element = driver.findElement(By.name("q")); WebElement element = driver.findElement(By.xpath("//input[@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(); /*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()); // Check the title of the page System.out.println("Page title is: " + driver.getTitle());
  • 7. HTTPWatch Plugin automation with Java Sandeep Tol ([email protected]) Page 7 // Save the log file plugin.log().save("C:/Users/sande_000/Desktop/PE Work/sandytest.hwl"); // Google's search is rendered dynamically with JavaScript. // Wait for the page to load, timeout after 10 seconds (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return d.getTitle().toLowerCase().startsWith("cheese!"); } }); // Should see: "cheese! - Google Search" System.out.println("Page title is: " + driver.getTitle()); //Close the browser driver.quit(); } } The Execution Console Output will look like this Auto generated HWL File would like this. You can also export this content to CSV format Picture 6: Auto generated HWL file 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 (v10) only works for Firefox version 35 and below package myauto; import java.io.File; import java.io.IOException; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile;
  • 8. HTTPWatch Plugin automation with Java Sandeep Tol ([email protected]) Page 8 import org.openqa.selenium.support.ui.ExpectedCondition; import org.openqa.selenium.support.ui.WebDriverWait; import com.httpwatch.*; public class SeleniumFirefoxHttpWatch { public static void main(String[] args) { // Create a new instance of the Firefox driver // Notice that the remainder of the code relies on the interface, // not the implementation. IController controller = ClassFactory.createController(); 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.manage().window().maximize(); // And now use this to visit Google driver.get("http://www.google.com"); // Alternatively the same thing can be done like this // driver.navigate().to("http://www.google.com"); String title = driver.getTitle(); System.out.println(" Title1 - " + title); // Plugin plugin = controller.firefox().attach("default"); Plugin plugin = controller.attachByTitle(title); // Find the text input element by its name WebElement element = driver.findElement(By.name("q")); // Enter something to search for element.sendKeys("Cheese!"); plugin.record(); // Now submit the form. WebDriver will find the form for us from the // element element.submit(); controller.wait_(plugin, -1); plugin.stop(); 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()); // Check the title of the page System.out.println("Page title is: " + driver.getTitle()); // Google's search is rendered dynamically with JavaScript. // Wait for the page to load, timeout after 10 seconds (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { return d.getTitle().toLowerCase().startsWith("cheese!"); }
  • 9. HTTPWatch Plugin automation with Java Sandeep Tol ([email protected]) Page 9 }); // Should see: "cheese! - Google Search" System.out.println("Page title is: " + driver.getTitle()); // Close the browser driver.quit(); } } Download Article Project from GiHub https://github.com/sandeeptol1/SampleJavaHttpWatchAutomation Conclusion 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 1. HTTPWatch API http://apihelp.httpwatch.com/#Automation%20Overview.html 2. COM 4 Java https://com4j.java.net/tutorial.html 3. Selenium Webdriver http://www.seleniumhq.org/projects/webdriver/ About the Author Sandeep Tol is Senior Architect at Wipro, with 17 years of 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: [email protected]