DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Enterprise AI Trend Report: Gain insights on ethical AI, MLOps, generative AI, large language models, and much more.

2024 Cloud survey: Share your insights on microservices, containers, K8s, CI/CD, and DevOps (+ enter a $750 raffle!) for our Trend Reports.

PostgreSQL: Learn about the open-source RDBMS' advanced capabilities, core components, common commands and functions, and general DBA tasks.

AI Automation Essentials. Check out the latest Refcard on all things AI automation, including model training, data security, and more.

Related

  • Architecture Patterns : Data-Driven Testing
  • The Power of Data-Driven Testing: A Deep Dive into Jakarta Persistence Specifications and NoSQL
  • Data Anonymization in Test Data Management
  • Using A/B Testing To Make Data-Driven Product Decisions

Trending

  • How to Query XML Files Using APIs in Java
  • Integration of AI Tools With SAP ABAP Programming
  • Distributed Caching: Enhancing Performance in Modern Applications
  • ChatGPT Code Smell [Comic]
  1. DZone
  2. Data Engineering
  3. Data
  4. Selenium WebDriver Tutorial: A Comprehensive Guide to WebDriver Automation

Selenium WebDriver Tutorial: A Comprehensive Guide to WebDriver Automation

Learn about WebDriver, a remote programming interface for controlling a browser locally or remotely, through our detailed tutorial on Selenium WebDriver.

By 
Harshit Paul user avatar
Harshit Paul
·
Jun. 07, 23 · Tutorial
Like (1)
Save
Tweet
Share
1.8K Views

Join the DZone community and get the full member experience.

Join For Free

WebDriver is a simple and concise remote programming interface that can be used to control, or in other words, drive, a browser either locally or on a remote machine. It is a platform-neutral and programming language-neutral wire protocol that can be used to remotely instruct the browser's behavior, like manipulating discovering DOM elements, manipulating DOM elements, controlling the behavior of user agents, etc.

Now part of the Selenium project, the combination of Selenium WebDriver encompasses the language bindings and the implementations of the code that controls individual browsers, which are now often simply referred to as WebDriver. The tool is especially useful in performing browser automation testing across various browsers and operating systems.

The online world has evolved quickly, and with each new application, a higher standard is set for user experience. When it comes to developing websites and web apps, it's important to ensure a seamless end-user experience. That's why automation testing is the best way to test your product across various browser and operating system combinations.

Because it offers support for a wide variety of programming languages, including Java, C#, Ruby, JavaScript, and more, Selenium can be an effective tool for large organizations that wish to automate their software testing process.

This WebDriver tutorial explores what WebDriver is, its features, how it works, best practices, and more.

Let's begin!

What Is WebDriver?

WebDriver is a browser automation technology that drives a browser natively, as a user would, either locally or on a remote machine using the Selenium server.

WebDriver is a program that enables users to control a web browser from another computer. It allows for the introspection and control of user agents and gives a platform- and language-neutral wire protocol as a way for out-of-process programs to instruct the behavior of web browsers remotely.

This specification provides a set of interfaces to discover and manipulate the DOM, focusing on web compatibility. This specification is primarily intended for use in the automated testing of user agents but may also be used in such a way as to allow in-browser scripts to control a browser.

What Is Selenium?

Selenium is an open-source test automation framework that allows web apps to be tested across different browsers & operating systems. It supports compatibility with multiple programming languages such as Java, JavaScript, Python, C#, and more, so testers can automate their website testing in any programming language they are comfortable with.

Selenium framework allows testers to deliver test cycles faster by automating repeated test cases. Selenium integrates seamlessly with CI/CD pipeline and can help with a sturdy, bug-free release deployment pipeline.

What Is Selenium WebDriver?

Selenium WebDriver is both a language binding and an implementation of browser-controlling code. This is commonly referred to as just WebDriver. Selenium WebDriver is a framework that lets you run tests across multiple browsers. It helps you to automate the process of checking whether your web application performs as expected. It allows you to choose from a number of programming languages to create test scripts.

At the time of writing this, Selenium 4, the latest version of Selenium, is the talk of the town since its launch in 2021. Check out this video to know about Selenium 4 Grid architecture, an overview of relative locators, W3C in Selenium WebDriver, and much more.

The Rise of WebDriver Framework

WebDriver is a set of standards used by different browsers. Browsers such as Chrome, Firefox, Edge, and more use these standards to make respective browser drivers such as ChromeDriver and Gecko. The testing community widely uses the WebDriver framework to perform automation testing on web applications and native mobile applications. Wondering why? Because the tests performed on WebDriver are simple and concise. All these reasons have made testers adopt WebDriver to fulfill their browser testing needs.

If you're a developer who's passionate about quality assurance, then this is the right place for you.

Whatever your level of WebDriver skill, this Selenium WebDriver tutorial unleashes the full potential of test automation. This will help you get everything up and running and give you all the information (and code) you need to create powerful test automation solutions.

Why Use Selenium WebDriver?

  • Compatibility: Selenium is a long-lived project with a wide range of expected functionality. It has been designed with care to allow existing users of Selenium WebDriver to avoid unexpected breakages.
  • Simplicity: This specification is designed to make it easy for automated testing tools to interact with web content. As such, you will find commands that simplify common tasks, such as typing into and clicking elements.
  • Extensions: The WebDriver protocol can be extended to add functionality that is not currently part of the ECMAScript standard. This allows all browsers to support the automation of new platform features and allows vendors to expose functionality specific to their browsers.
  • Capabilities: WebDriver capabilities describe the features supported by a given implementation. Local endpoints can use capabilities to define which features they require remote endpoints to satisfy when creating a new session. Remote endpoints can use capabilities to describe the full feature set for a session.

WebDriver Nodes

The WebDriver protocol allows for communication between:

  • Local End: The local end is the client side of WebDriver's protocol, usually implemented by language-specific libraries that provide an API on top of the wire protocol. Any specifics imposed by this specification do not bind these libraries.
  • Remote End: The remote end hosts the server-side portion of the WebDriver protocol. The goal of this specification is to define what a remote end should do in response to messages from the WebDriver protocol.

Remote ends are classified into two broad conformance classes called node types, which are:

  • Intermediary Node: An intermediary node implements both the local end of a protocol and its remote end but is not expected to implement the remote end directly. Any nodes between an intermediary node and a local endpoint are said to be downstream of that node. In contrast, any nodes between an intermediary node and a remote endpoint are said to be upstream.
  • Endpoint Node: An endpoint node is the final remote end in a chain of nodes that is not an intermediary node. The endpoint node receives input from the user and sends output to the user.

WebDriver Protocol

To communicate with WebDriver, endpoints must provide an HTTP-compliant wire protocol that maps to different commands.

This standard does not constrain how local ends interact with their users. Local ends are only expected to be compatible with the Remote End Protocol; they're not required to expose a user-facing API. WebDriver protocol includes the following:

  • Algorithms: This specification is written in terms of algorithms. Steps in these algorithms are not intended to be performed by a human being; they are too detailed and rigorous. Instead, implementors are encouraged to design their systems so that the machine performs these steps automatically.
  • Commands: WebDriver is composed of commands defined in this specification. A single HTTP request with a method and template produces a single WebDriver command, which in turn produces a single HTTP response.
  • Processing Model: There are two ends of the connection, a client and a server. The server can read requests from the client and send back responses, typically over a TCP socket. This specification covers how these two ends communicate but not how they establish that connection in the first place.
  • Routing Requests: Request routing is the series of steps that must be taken to implement a command represented by an HTTP request. WebDriver-defined URLs on a remote end must either have no prefix or be prefixed with the URL prefix associated with that remote end.
  • Endpoints:The following table lists each endpoint node command, the method and URI template used for the command, and extension commands:
    Method URI Template Command
    Method URI Template Command
    POST /session New Session
    DELETE /session/{session id} Delete Session
    GET /status Status
    GET /session/{session id}/timeouts Get Timeouts
    POST /session/{session id}/timeouts Set Timeouts
    POST /session/{session id}/url Navigate To
    GET /session/{session id}/url Get Current URL
    POST /session/{session id}/back Back
    POST /session/{session id}/forward Forward
    POST /session/{session id}/refresh Refresh
    GET /session/{session id}/title Get Title
    GET /session/{session id}/window Get Window Handle
    DELETE /session/{session id}/window Close Window
    POST /session/{session id}/window Switch To Window
    GET /session/{session id}/window/handles Get Window Handles
    POST /session/{session id}/window/new New Window
    POST /session/{session id}/frame Switch To Frame
    POST /session/{session id}/frame/parent Switch To Parent Frame
    GET /session/{session id}/window/rect Get Window Rect
    POST /session/{session id}/window/rect Set Window Rect
    POST /session/{session id}/window/maximize Maximize Window
    POST /session/{session id}/window/minimize Minimize Window
    POST /session/{session id}/window/fullscreen Fullscreen Window
    GET /session/{session id}/element/active Get Active Element
    GET /session/{session id}/element/{element id}/shadow Get Element Shadow Root
    POST /session/{session id}/element Find Element
    POST /session/{session id}/elements Find Element
    POST /session/{session id}/element/{element id}/element Find Element From Element
    POST /session/{session id}/element/{element id}/elements Find Elements From Element
    POST /session/{session id}/shadow/{shadow id}/element Find Element From Shadow Root
    POST /session/{session id}/shadow/{shadow id}/elements Find Elements From Shadow Root
    GET /session/{session id}/element/{element id}/selected Is Element Selected
    GET /session/{session id}/element/{element id}/attribute/{name} Get Element Attribute
    GET /session/{session id}/element/{element id}/property/{name} Get Element Property
    GET /session/{session id}/element/{element id}/css/{property name} Get Element CSS Value
    GET /session/{session id}/element/{element id}/text Get Element Text
    GET /session/{session id}/element/{element id}/name Get Element Tag Name
    GET /session/{session id}/element/{element id}/rect Get Element Rect
    GET /session/{session id}/element/{element id}/enabled Is Element Enabled
    GET /session/{session id}/element/{element id}/computedrole Get Computed Role
    GET /session/{session id}/element/{element id}/computedlabel Get Computed Label
    POST /session/{session id}/element/{element id}/click Element Click
    POST /session/{session id}/element/{element id}/clear Element Clear
    POST /session/{session id}/element/{element id}/value Element Send Keys
    GET /session/{session id}/source Get Page Source
    POST /session/{session id}/execute/sync Execute Script
    POST /session/{session id}/execute/async Execute Async Script
    GET /session/{session id}/cookie Get All Cookies
    GET /session/{session id}/cookie/{name} Get Named Cookie
    POST /session/{session id}/cookie Add Cookie
    DELETE /session/{session id}/cookie/{name} Delete Cookie
    DELETE /session/{session id}/cookie Delete All Cookies
    POST /session/{session id}/actions Perform Actions
    DELETE /session/{session id}/actions Release Actions
    POST /session/{session id}/alert/dismiss Dismiss Alert
    POST /session/{session id}/alert/accept Accept Alert
    GET /session/{session id}/alert/text Get Alert Text
    POST /session/{session id}/alert/text Send Alert Text
    GET /session/{session id}/screenshot Take Screenshot
    GET /session/{session id}/element/{element id}/screenshot Take Element Screenshot
    POST /session/{session id}/print Print Page
  • Errors: WebDriver errors are represented by an HTTP response with a status in the 4xx or 5xx range and a JSON body containing details of the error. The JSON response contains a message detailing the specific error and a field named "value" that contains detailed information about the type of error.
  • Extensions: Vendors can define additional commands seamlessly, integrating with the standard protocol, making it easier to access platform-specific features. This also allows other web standards to define commands for automating new platform features. Such commands are called extension commands and are not treated differently than other commands. Each has its own HTTP endpoint and remote endpoint steps.

WebDriver Capabilities

WebDriver capabilities are used to communicate what features the implementation supports. The local end can use capabilities to describe the features it requires the remote end to satisfy when creating a new session. Likewise, the remote end can use capabilities to describe its full feature set for a session.

The following table lists the capabilities that each implementation must support. Each implementation may define its extension capabilities.

Capability Key Value Type Description
Browser name "browserName" string Identifies the user agent.
Browser version "browserVersion" string Identifies the version of the user agent.
Platform name "platformName" string Identifies the operating system of the endpoint node.
Accept insecure TLS certificates "acceptInsecureCerts" boolean Indicates whether untrusted and self-signed TLS certificates are implicitly trusted on navigation for the duration of the session.
Page load strategy "pageLoadStrategy" string Defines the current session's page load strategy.
Proxy configuration "proxy" JSON Object Defines the current session's proxy configuration.
Window dimensioning/positioning "setWindowRect" boolean Indicates whether the remote end supports all of the resizing and repositioning commands.
Session timeouts "timeouts" JSON Object Describes the timeouts imposed on certain session operations.
Strict file interactability "strictFileInteractability" boolean Defines the current session's strict file interactability.
Unhandled prompt behavior "unhandledPromptBehavior" string Describes the current session's user prompt handler. Defaults to the dismiss and notify state.

WebDriver Sessions

A session is a single-user agent instance, including all its child browsers.WebDriver provides each session with a unique identifier that can be used to differentiate one session from another, allowing multiple user agents to be controlled from a single HTTP server and allowing sessions to be routed via a multiplexer (known as an intermediary node).

A WebDriver session is an instance of the connection between a local end and a specific remote end.

New Session

HTTP Method URI Template
POST /session

The New Session command creates a new WebDriver session, which attempts to connect to the endpoint node. If the creation fails, the WebDriver client returns an error message.

Delete Session

HTTP Method URI Template
DELETE /session/{session id}

The remote end steps are:

  • Try to close the active session if the current session is an active one.
  • Return success with data null.

Status

HTTP Method URI Template
GET /status

The status session returns information about the remote end's ability to create new sessions. But it may additionally include meta information specific to the implementation.

WebDriver Commands

The following table lists some useful and common WebDriver commands and their syntax:

S.No. Command and Description
1. driver.get("URL"); To navigate to an application.
2. element.sendKeys("inputtext"); Enter some text into an input box.
3. element.clear(); Clear the contents from the input box.
4. select.deselectAll(); Deselect all OPTIONs from the first SELECT on the page.
5. select.selectByVisibleText("some text"); Select the OPTION with the input specified by the user.
6. driver.switchTo().window("windowName"); Move the focus from one window to another.
7. driver.switchTo().frame("frameName"); Swing from frame to frame.
8. driver.switchTo().alert(); Helps in handling alerts.
9. driver.navigate().to("URL"); Navigate to the URL.
10. driver.navigate().forward(); To navigate forward.
11. driver.navigate().back(); To navigate back.
12. driver.close(); Closes the current browser associated with the driver.
13. driver.quit(); Quits the driver and closes all the associated windows of that driver.
14. driver.refresh(); Refreshes the current page.

WebDriver Screen Capture

Screenshots are a great way to provide visual diagnostic information. Screenshots take a snapshot of the initial viewport's frame buffer as a lossless PNG image and return it to the local end as a Base64 encoded string.

The WebDriver's Take Screenshot command captures the top-level browsing context's initial viewport, and the Take Element Screenshot command allows you to capture an element's visible region after it has been scrolled into view.

Take Screenshot

HTTP Method URI Template
GET /session/{session id}/screenshot

Remote end steps are:

  • If the current top-level browsing context has been closed, return an error with the error code no such window.
  • When the user agent decides to run the next animation frame callbacks.
  • Return success with a string containing encoded data.

Take Element Screenshot

HTTP Method URI Template
GET /session/{session id}/element/{element id}/screenshot

Remote end steps are:

  • If the current top-level browsing context has been closed, return an error with the error code no such window.
  • Handle any user prompts and return an error if it is a prompt that cannot be read.
  • Let the element be the result of trying to get a known element with an id attribute equal to the url variable's value.
  • Click the element to scroll it into view.
  • When the user agent is next scheduled to run the animation frame callbacks.
  • Return success with a string containing encoded data.

Selenium WebDriver Architecture

Selenium WebDriver allows us to create cross-browser tests using a programming language of our choice.

The Selenium WebDriver architecture consists of four major components:

  • Selenium Client Libraries/Language Bindings
  • JSON Wire Protocol
  • Browser Drivers
  • Real Browsers

Selenium Client Libraries

Selenium developers have built language bindings to support the use of the program in multiple languages. For example, if you are writing your tests in Java, you can use the Java bindings. Client libraries can be downloaded from the official Selenium website.

JSON Wire Protocol

JSON (JavaScript Object Notation) is a data-interchange format that makes it easier to read and write data between server and client. It supports data structures like objects and arrays, which makes it easier to transfer data between clients and servers.

JSON Wire Protocol

Browsers Drivers

To develop a secure connection with the browser, Selenium uses Drivers. Each driver is specific to each browser and is responsible for handling all the logic that makes up that particular browser. In addition, each automation language has its own corresponding driver. Each of the following series of actions occurs when a Selenium automation test is triggered:

  • Each Selenium command results in an HTTP request, which is sent to the browser driver.
  • This request is routed through the HTTP Server.
  • The HTTP server now drives the execution of instructions on the browser.
  • The browser sends a status message to the HTTP server, which forwards it to the automation script.

ChromeDriver, GeckoDriver, MicrosoftEdge driver, etc., are some browser drivers.

Browsers

Browsers act as the endpoint of our test executions. Here are the supported browsers:

  • Chrome
  • Firefox
  • Safari
  • Edge
  • Internet Explorer

Features of Selenium WebDriver

Selenium is a widely used open-source testing framework that comes with a lot of features:

  • Open Source: The first significant feature of Selenium WebDriver is its open source. It provides all the features of QTP and more, completely free of charge. You can download it directly from the official site; support is also available because the tool is open-source.
  • Language Support: WebDriver's support for multiple programming languages is one of its top benefits. WebDriver supports nearly all programming languages developers should know, including Python, PHP, Java, C#, Ruby, and JavaScript. It also offers bindings to every primary programing language. This flexibility gives web developers the freedom to work in whichever language they are most comfortable with.
  • Multiple OS Support: Unlike previous releases of Selenium WebDriver, one of the major benefits of this version is that it supports multiple operating systems, such as Linux, UNIX, and Mac, as well as Windows. You can create a customized testing suite that can be used over any platform using its solution suite. WebDriver allows you to create a test case on Windows and execute it on Mac.
  • Cross-Browser Compatibility Testing: Selenium WebDriver, unlike its predecessors, has expanded its support for cross-browser automation. This tool supports all major browsers, including Chrome, Firefox, Safari, Opera, IE, Edge, Yandex, etc. When you execute cross-browser testing of a website, WebDriver provides you with an automated solution.
  • Multiple Language and Framework Support: WebDriver can be integrated with various frameworks like Maven or ANT for compiling the source code. To ease automation testing, WebDriver can also be integrated with testing frameworks like TestNG. In addition, it can integrate with Jenkins for Continuous Integration or Continuous Delivery of automated build and deployment.
  • Cross-Device Testing: The ability to write automated test cases for multiple devices is a major benefit of automation testing with Selenium WebDriver. A developer can now write an automated test case that will run on iPhones, Blackberrys, and Android devices, thereby helping in addressing cross-device issues.
  • Community Support: Selenium WebDriver's support is community-based, which enables regular upgrades and updates. These updates are available whenever required, and no special training is needed to access them. This makes Selenium WebDriver both budget-friendly and resourceful.
  • Easy to Implement: Selenium WebDriver's user-friendliness is one of many widely acclaimed features of the tool for automation testing. Being open source, Selenium WebDriver allows users to script their personalized extensions in order to develop customized actions that can be manipulated once they reach an advanced level.
  • Add-ons and Reusability: With Selenium WebDriver's browser compatibility testing capabilities, it is possible for a tester to run multiple testing scenarios with WebDriver since it covers every functionality testing aspect of the application. The add-ons, which can be customized, offer great benefits for automation testing with WebDriver.
  • Open Source: Performance and Speed: The automation tool WebDriver is part of Selenium, a software program for web app testing. WebDriver can execute test cases quicker than other comparable tools because it communicates directly with the browser and has no requirement for intermediaries like servers.
  • Dynamic Web Elements: Selenium is capable of handling dynamic web elements with ease. The following are a few methods that it makes use of for this purpose:
    • Contains(): You can use partial text to find an element.
    • Absolute XPath(): The XPath selector language can easily handle dynamic web elements, even those that do not have a fixed location on the page. XPath comes with a complete set of paths for web UI automation right from the root node.
    • StartsWith(): The function helps you find a specific attribute of a dynamic web element, such as an ID or class name, by looking at the beginning of the HTML tag.
  • WebDriver: Classes and Methods: Selenium WebDriver is one of the most important tools offered by Selenium. It provides solutions for potential problems in automation testing, such as dynamic locators for complex web elements like radio buttons, dropdowns, alerts, and more.
  • Combination of Tool and DSL: Selenium is a combination of tools and DSL (Domain Specific Language) that allows you to carry out various types of tests through the browser. It allows you to record the tests carried out in different browsers like Internet Explorer, Safari, Firefox, Chrome, and more.
  • Easy Identification and Use of Web Elements: Selenium's robust set of locators make it easy to identify web elements on web apps, making implementing these elements much easier in your test automation suite.
  • Mouse Cursor and Keyboard Simulation: The WebDriver enables you to mimic a real user scenario by handling keyboard and mouse events. It consists of action classes, which allow you to automate simple scenarios such as the keypress event, and mouse click or complex ones like multiple item selection, drag and drop, click and hold, etc.

WebDriver Limitations

WebDriver is a feature-rich framework among the tester community. But, it also has some limitations of its own:

  • Selenium is designed to automate web applications, not desktop applications. Desktop automation requires a different type of automation tool that's designed for that purpose.
  • Selenium requires extensive knowledge and experience to automate tests effectively.
  • Because Selenium is open-source software, users must rely on community forums to get technical issues resolved.
  • Automation tests for web services like SOAP and REST cannot be performed using Selenium.
  • The Selenium WebDriver framework has no built-in reporting capabilities; thus, users must rely on plug-ins like JUnit and TestNG to generate test reports.
  • It is not possible to automate image testing with Selenium alone. Sikuli, an open-source visual automation program, must be integrated into the Selenium framework to test images.
  • Selenium is a maintenance-heavy framework, and as the product grows, scaling becomes more difficult.
  • Test environments in Selenium take more time to set up than vendor tools like UFT, RFT, and Silk Test.
  • Due to a lack of tool integration, Selenium does not provide support for test management.

WebDriver Best Practices

Here are some of the best practices of Selenium WebDriver to make your life easier:

  • Avoid Blocking Sleep Calls: The behavior of web applications (or websites) depends on many factors that can range from network speed to device capabilities, access location, and load on the back-end server. These factors make it challenging to predict the actual time it takes to load a specific web element. In single-threaded applications, a delay achieved using a blocking sleep call will block the thread and effectively shut down the process.
  • Set Naming Conventions: Using standard naming conventions for file types speeds up development and Selenium testing. When some tests fail during the execution stage, it's easy to figure out which functionalities are broken by just taking a quick look at the test name.
  • Implement Logging and Reporting: Logging can be a huge savior when locating failing test cases. When a particular test in an extensive test suite fails, it can help you pinpoint the problem. Console logs at appropriate places in the code can help develop a better understanding of the code and zero in on potential problems.
  • Using Design Patterns and Principles: When writing Selenium test scripts, one should keep in mind the script's maintainability and scalability. This is possible if changes to a web page's UI do not require changes to the test script. If poorly maintained, this could lead to different scripts using the same web element. Page Objects, a popular web UI automation pattern, can be used to improve test maintenance and reduce code duplication. Page Objects are useful because they allow you to centralize your object repository in one place: the page object class. Hence, every web page being tested will have its corresponding page object class.
  • Browser Compatibility Matrix for Cross-Browser Testing: Browser Matrix is a vital resource that combines information drawn from product analytics, geolocation, and other detailed insights about audience usage patterns, stats counter, and competitor analysis. Browser Matrix will reduce the development and testing efforts by helping you cover all the relevant browsers (that matter to your product). Here is a sample Browser Compatibility Matrix:

Browser Compatibility Matrix

Conclusions

Selenium is today's web developers' top choice when choosing an automation testing tool. It has been loved by testers and developers alike worldwide. Through this extensive Selenium WebDriver tutorial, we hope to answer every question you have regarding WebDriver testing.

Happy Testing!

Session (web analytics) Testing Selenium Browser-based Data (computing) remote

Published at DZone with permission of Harshit Paul, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Architecture Patterns : Data-Driven Testing
  • The Power of Data-Driven Testing: A Deep Dive into Jakarta Persistence Specifications and NoSQL
  • Data Anonymization in Test Data Management
  • Using A/B Testing To Make Data-Driven Product Decisions

Partner Resources


Comments

ABOUT US

  • About DZone
  • Send feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends: