SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot IntroductionJeevesh Pandey
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework tola99
 
AEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene IndexesAEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene IndexesAdobeMarketingCloud
 
Introduction to Automation Testing and Selenium overiew
Introduction to Automation Testing and Selenium overiewIntroduction to Automation Testing and Selenium overiew
Introduction to Automation Testing and Selenium overiewDisha Srivastava
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introductionRasheed Waraich
 
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...Simplilearn
 
Selenium WebDriver Tutorial For Beginners | What Is Selenium WebDriver | Sele...
Selenium WebDriver Tutorial For Beginners | What Is Selenium WebDriver | Sele...Selenium WebDriver Tutorial For Beginners | What Is Selenium WebDriver | Sele...
Selenium WebDriver Tutorial For Beginners | What Is Selenium WebDriver | Sele...Edureka!
 
Springboot introduction
Springboot introductionSpringboot introduction
Springboot introductionSagar Verma
 
Selenium Maven With Eclipse | Edureka
Selenium Maven With Eclipse | EdurekaSelenium Maven With Eclipse | Edureka
Selenium Maven With Eclipse | EdurekaEdureka!
 
Test automation using selenium
Test automation using seleniumTest automation using selenium
Test automation using seleniumshreyas JC
 
Cross browser testing using BrowserStack
Cross browser testing using BrowserStack Cross browser testing using BrowserStack
Cross browser testing using BrowserStack RapidValue
 
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...Simplilearn
 
Aem asset optimizations & best practices
Aem asset optimizations & best practicesAem asset optimizations & best practices
Aem asset optimizations & best practicesKanika Gera
 

Was ist angesagt? (20)

Spring boot Introduction
Spring boot IntroductionSpring boot Introduction
Spring boot Introduction
 
Selenium
SeleniumSelenium
Selenium
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
 
AEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene IndexesAEM GEMs Session Oak Lucene Indexes
AEM GEMs Session Oak Lucene Indexes
 
Introduction to Automation Testing and Selenium overiew
Introduction to Automation Testing and Selenium overiewIntroduction to Automation Testing and Selenium overiew
Introduction to Automation Testing and Selenium overiew
 
Hibernate in Action
Hibernate in ActionHibernate in Action
Hibernate in Action
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...
What Is Selenium? | Selenium Basics For Beginners | Introduction To Selenium ...
 
Springboot Microservices
Springboot MicroservicesSpringboot Microservices
Springboot Microservices
 
Selenium WebDriver Tutorial For Beginners | What Is Selenium WebDriver | Sele...
Selenium WebDriver Tutorial For Beginners | What Is Selenium WebDriver | Sele...Selenium WebDriver Tutorial For Beginners | What Is Selenium WebDriver | Sele...
Selenium WebDriver Tutorial For Beginners | What Is Selenium WebDriver | Sele...
 
Apache tomcat
Apache tomcatApache tomcat
Apache tomcat
 
Springboot introduction
Springboot introductionSpringboot introduction
Springboot introduction
 
Selenium Maven With Eclipse | Edureka
Selenium Maven With Eclipse | EdurekaSelenium Maven With Eclipse | Edureka
Selenium Maven With Eclipse | Edureka
 
Test automation using selenium
Test automation using seleniumTest automation using selenium
Test automation using selenium
 
Cross browser testing using BrowserStack
Cross browser testing using BrowserStack Cross browser testing using BrowserStack
Cross browser testing using BrowserStack
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...
 
Aem asset optimizations & best practices
Aem asset optimizations & best practicesAem asset optimizations & best practices
Aem asset optimizations & best practices
 
QSpiders - Automation using Selenium
QSpiders - Automation using SeleniumQSpiders - Automation using Selenium
QSpiders - Automation using Selenium
 

Ähnlich wie Using HttpWatch Plug-in with Selenium Automation in Java

ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008Caleb Jenkins
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applicationshchen1
 
Programming Server side with Sevlet
 Programming Server side with Sevlet  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)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 IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introductionvstorm83
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullyMastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullySpringPeople
 
Implementing auto complete using JQuery
Implementing auto complete using JQueryImplementing auto complete using JQuery
Implementing auto complete using JQueryBhushan Mulmule
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Appschrisb206 chrisb206
 
Web II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side developmentWeb II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side developmentRandy Connolly
 
Html5 - Awesome APIs
Html5 - Awesome APIsHtml5 - Awesome APIs
Html5 - Awesome APIsDragos Ionita
 
Introduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and SilverlightIntroduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and SilverlightPeter Gfader
 
AspMVC4 start101
AspMVC4 start101AspMVC4 start101
AspMVC4 start101Rich Helton
 
Ta Javaserverside Eran Toch
Ta Javaserverside Eran TochTa Javaserverside Eran Toch
Ta Javaserverside Eran TochAdil Jafri
 

Ähnlich wie Using HttpWatch Plug-in with Selenium Automation in Java (20)

ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008ASP.NET AJAX with Visual Studio 2008
ASP.NET AJAX with Visual Studio 2008
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
Selenium.pptx
Selenium.pptxSelenium.pptx
Selenium.pptx
 
Selenium WebDriver FAQ's
Selenium WebDriver FAQ'sSelenium WebDriver FAQ's
Selenium WebDriver FAQ's
 
Qa process
Qa processQa process
Qa process
 
Qa process
Qa processQa process
Qa process
 
Programming Server side with Sevlet
 Programming Server side with Sevlet  Programming Server side with Sevlet
Programming Server side with Sevlet
 
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
Selenium & PHPUnit made easy with Steward (Berlin, April 2017)
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullyMastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium Successfully
 
Implementing auto complete using JQuery
Implementing auto complete using JQueryImplementing auto complete using JQuery
Implementing auto complete using JQuery
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
 
Web II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side developmentWeb II - 01 - Introduction to server-side development
Web II - 01 - Introduction to server-side development
 
Yii php framework_honey
Yii php framework_honeyYii php framework_honey
Yii php framework_honey
 
Play framework
Play frameworkPlay framework
Play framework
 
Html5 - Awesome APIs
Html5 - Awesome APIsHtml5 - Awesome APIs
Html5 - Awesome APIs
 
Selenium
SeleniumSelenium
Selenium
 
Introduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and SilverlightIntroduction to JQuery, ASP.NET MVC and Silverlight
Introduction to JQuery, ASP.NET MVC and Silverlight
 
AspMVC4 start101
AspMVC4 start101AspMVC4 start101
AspMVC4 start101
 
Ta Javaserverside Eran Toch
Ta Javaserverside Eran TochTa Javaserverside Eran Toch
Ta Javaserverside Eran Toch
 

Kürzlich hochgeladen

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 

Kürzlich hochgeladen (20)

Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 

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 (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
  • 3. 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.
  • 4. 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
  • 5. 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;
  • 6. 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());
  • 7. 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;
  • 8. 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!"); }
  • 9. 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