SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Ppt of soap ui
Ppt of soap uiPpt of soap ui
Ppt of soap ui
pkslide28
 

Mais procurados (20)

API Testing
API TestingAPI Testing
API Testing
 
QSpiders - Automation using Selenium
QSpiders - Automation using SeleniumQSpiders - Automation using Selenium
QSpiders - Automation using Selenium
 
How to Automate API Testing
How to Automate API TestingHow to Automate API Testing
How to Automate API Testing
 
Pentesting ReST API
Pentesting ReST APIPentesting ReST API
Pentesting ReST API
 
Introduction to Selenium Web Driver
Introduction to Selenium Web DriverIntroduction to Selenium Web Driver
Introduction to Selenium Web Driver
 
Playwright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern WebPlaywright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern Web
 
Checkmarx meetup API Security - API Security top 10 - Erez Yalon
Checkmarx meetup API Security -  API Security top 10 - Erez YalonCheckmarx meetup API Security -  API Security top 10 - Erez Yalon
Checkmarx meetup API Security - API Security top 10 - Erez Yalon
 
Appium
AppiumAppium
Appium
 
Selenium 4 with Simon Stewart [Webinar]
Selenium 4 with Simon Stewart [Webinar]Selenium 4 with Simon Stewart [Webinar]
Selenium 4 with Simon Stewart [Webinar]
 
An Introduction To REST API
An Introduction To REST APIAn Introduction To REST API
An Introduction To REST API
 
Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016
 
Whitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applicationsWhitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applications
 
Ppt of soap ui
Ppt of soap uiPpt of soap ui
Ppt of soap ui
 
An Introduction To Automated API Testing
An Introduction To Automated API TestingAn Introduction To Automated API Testing
An Introduction To Automated API Testing
 
Introduction to selenium
Introduction to seleniumIntroduction to selenium
Introduction to selenium
 
2021 ZAP Automation in CI/CD
2021 ZAP Automation in CI/CD2021 ZAP Automation in CI/CD
2021 ZAP Automation in CI/CD
 
API Testing. Streamline your testing process.
API Testing. Streamline your testing process.API Testing. Streamline your testing process.
API Testing. Streamline your testing process.
 
API Testing: The heart of functional testing" with Bj Rollison
API Testing: The heart of functional testing" with Bj RollisonAPI Testing: The heart of functional testing" with Bj Rollison
API Testing: The heart of functional testing" with Bj Rollison
 
Test Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and CucumberTest Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and Cucumber
 
Cross browser testing using BrowserStack
Cross browser testing using BrowserStack Cross browser testing using BrowserStack
Cross browser testing using BrowserStack
 

Semelhante a Using HttpWatch Plug-in with Selenium Automation in Java

Programming Server side with Sevlet
 Programming Server side with Sevlet  Programming Server side with Sevlet
Programming Server side with Sevlet
backdoor
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
vstorm83
 
Ta Javaserverside Eran Toch
Ta Javaserverside Eran TochTa Javaserverside Eran Toch
Ta Javaserverside Eran Toch
Adil Jafri
 

Semelhante a 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
 

Último

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

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