Title Page Copyright and Credits Selenium WebDriver Quick Start Guide Packt Upsell Why subscribe? Packt.com Contributors About the author About the reviewer Packt is searching for authors like you Preface Who this book is for What this book covers To get the most out of this book Download the example code files Download the color images Code in action Conventions used Get in touch Reviews Introducing Selenium WebDriver and Environment Setup Technical requirements Why is test automation required? Advantages of test automation Some pointers on Selenium What's new in Java 8 Lambda expressions and functional interfaces Functional interfaces Default and static methods in an interface The forEach method for a collection Streams in Java 8 Understanding Selenium RC What is cross-site scripting (XSS)? Introducing Selenium WebDriver Class structure of Selenium WebDriver Drivers in Selenium Remote WebDriver Mobile drivers Headless browsers Why do we need headless browsers? Preparing for the very first script Installing Java 8 Setting up Eclipse Downloading Eclipse Creating a Maven project Understanding pom.xml Manual configuration Creating the first script Summary Understanding the Document Object Model and Creating Customized XPaths Technical requirements What is the DOM? WebElements SearchContext interface  DOM traversal Dissecting the By class The two types of XPaths Understanding customized XPaths Customized CSS An example traversal Understanding the text() methods Finding elements within the container element Best practice Extracting WebElements dynamically using tagName Properties file for WebElements Prerequisites for automating mobile applications XPaths for mobile applications Finding XPaths for mobile browser applications Connecting the actual mobile device How to use Screencast Appium Inspector window How to use UIAutomatorViewer Mobile locators What is a WebView? Introducing the Fillo API Debugging in Eclipse Summary Basic Selenium Commands and Their Usage in Building a Framework Technical requirements What are method signatures? What are Lists in java? Important methods in Selenium Some common reusable methods The difference between quit() and close() Understanding the keyword driven framework Concept of Map and HashMap Bird's eye view of the framework Introducing the testng XML file Triggering the testng XML from within the POM XML file Handling errors while running pom.xml Introducing the log4j framework Extent Reports How to use Extent Reports in code? Summary Handling Popups, Frames, and Alerts Technical requirements Window handles Fetching the window handles Understanding the Set interface A look at the iterator() method  Modal and non-modal dialog Modal and non-modal pop-up windows JavaScript and jQuery alerts Handling non-modal popup windows Introducing the switchTo() method Looking at the getTitle() method Looping through all open windows using the simple for loop Handling modal popup windows Modal and non-modal alerts Creating JavaScript and jQuery alerts Handling non-modal jQuery alerts Handling modal JavaScript alerts Understanding frames and iframes Handling mobile app permission alerts DesiredCapabilities What is a Desired Capability? The DesiredCapabilities class Enabling protected mode settings in Internet Explorer Learning Chrome options Learning the Firefox options and the Firefox profile Learning the Internet Explorer options autograntpermissions capability on Android Summary Synchronization Technical requirements What is synchronization? Synchronization types Unconditional synchronization Thread.sleep(long)  Conditional synchronization Synchronization at the WebDriver-instance level Implicit wait Synchronization at the WebElement level Explicit wait Fluent wait Function keyword A glance at the JQuery library A Sample application using JQuery Tomcat setup Exposing the JavascriptExecutor Pitfall – Never fall into one Summary The Actions Class and JavascriptExecutor Technical requirements Builder design pattern The actions class Various scenarios for the actions class Introducing JavascriptExecutor Various scenarios for JavascriptExecutor EventFiringWebDriver First steps toward the framework Understanding the Selenium Grid Architecture of the Selenium Grid Basic setup Exercise Summary The Command Pattern and Creating Components Technical requirements Introducing the command design pattern Client Invoker   Command  Receiver A look at the project structure in Eclipse Introducing the TestNG framework Installing the TestNG plugin for Eclipse A look at testng.xml Incorporating Selenium Grid Running tests in parallel Emailable report Summary Hybrid Framework Technical requirements Introducing the WebDriverManager library How to use the WebDriverManager library WebDriverManager as a Java dependency WebDriverManager as CLI WebDriverManagerServer Advantages of WebDriverManager DataProviders in TestNG Having a separate DataProvider class Introducing TestNG listeners Different types of listeners Implementing the ITestListener interface Extending the TestListenerAdapter class Introducing assertions Testing for a negative scenario Two different types of asserts  Using soft asserts Implementing logging and reporting in the framework Incorporating reporting in the framework Creating a custom XL file from testng-results.xml Adding keywords to the framework Creating reports using Fillo Generating screenshots in Selenium Using the Ashot API Some extra location techniques in Selenium WebDriver 3 Understanding ByIdOrName ByAll locator ByChained Locator Welcome Selenium 4 Next steps Summary Other Books You May Enjoy Leave a review - let other readers know what you think