Title Page Copyright and Credits Selenium Fundamentals Packt Upsell Why Subscribe? Packt.com Contributors About the Author 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 Conventions Used Get in Touch Reviews Getting Started Software Automation Going the Automation Way Activity: Automation Brainstorming Selenium Overview The WebDriver API The Selenium Server Selenium Glossary Activity: Selenium Planning Environment Configuration Browser Drivers Downloading and preparing browser drivers Maven Project Creating a Maven project Verifying That the Development Environment Is Ready Summary WebDriver Functionality Instantiating a WebDriver – Chrome Creating the Main Structure of Your First Selenium Automation Script An Overview of Frequently Used Methods Activity: Starting and Finalizing a Script Controlling the Browser Window Navigation Navigating in an Automation Script Resizing Resizing Windows in an Automation Script Managing Alerts Managing Alerts in an Automation Script Managing Frames and iFrames Managing Frames in an Automation Script Managing Windows Managing Windows in an Automation Script Activity: Resizing and Moving Windows with a Selenium Automation Script Summary WebElement Functionality Using Browser Developer Tools – Chrome Inspecting a Web Page with Chrome Devtools Overview of WebElement Functionality Handling the StaleElementReferenceException Interacting with Elements on a Page Interacting with Textboxes and Textareas Elements Interacting with Textboxes and Textareas During an Automation Script Interacting with Dropdown and Lists Interacting with Dropdown and Lists During an Automation Script Interacting with Radio Buttons and Radio Button Groups Interacting with Radio Buttons and Radio Buttons Groups During an Automation Script Interacting with Checkboxes Interacting with Checkboxes During an Automation Script Activity: Filling in a Form and Submitting it Element Locator Types – ID, Names, XPath, CSS, and So On Activity: Locating Elements Summary Advanced Element Location Navigating the DOM Understanding the DOM's Structure The Relationship between Selenium and the DOM Identifying Elements and Creating Locators for Dom Elements Retrieve Information from a Table Searching Within Previously Found Elements Locating Elements Based on Their Relationships Searching for Elements Through Known Elements Creating Complex Locators to Reach Any Element Common Ways to Use CSS Selectors Finding Elements by Using Class Attributes and IDs Locating Elements by Their Attributes Creating Complex Selectors for Unique Locators Activity: Automating Checkout Summary Waiting for Elements Implicit Waits Creating an Implicit Wait Explicit Waits Activity: Creating an Explicit Wait Implicit Versus Explicit Waits Waiting for an Element with a Custom Written Condition Creating Custom Waits for Finding Elements Creating a Custom Wait (Waiting for an Element) Creating Custom Waits so That an Element's Attribute Values Can Be Updated Creating a Custom Wait (Waiting for an Element's Attribute Updates) Creating Custom Waits for an Element's Visibility Creating a Custom Wait (Waiting for an Element's Visibility) Summary Page Object Model Introduction to the Page Object Model Understanding the Architecture of Web Applications Applying Web Application Architecture to Test Automation Scripts Modeling a Web Application Using Page Objects Creating a Page Object Creating a Page Object For Age Calculator Creating an Automation Script Creating an Automation Script for Age Calculator Activity: Implementing the POM on a Multi-Page Application Implementing Nested Page Object Instances Activity: Implementing Nested Page Object Instances Summary Writing Tests What is a Test Framework? Choosing a Test Framework Creating Test Scripts and Suites Annotations The TestNG.xml File Activity: Creating a TestNG Test Validating and Viewing Results Activity: Viewing the Results Summary Analysis and Troubleshooting Analyzing a Test Report General Recommendations Analyzing a Test Result Tracking Down Timing Errors How to Deal with Potential Timing Errors Tracking Down Timing Errors with Synchronization Points Separating Real Issues from Flaky Tests Identifying Flaky Tests Decreasing the Chances of Flaky Tests Summary Using a Selenium Grid Configuring and Connecting to a Local Grid Launching the Grid Hub Verifying That the Grid Hub Is Running Adding Selenium Nodes to the Grid Hub Verifying That a Selenium Instance Has Been Registered Activity: Running a Script Against a Grid Hub Configuring and Connecting to a Network Grid Adding Selenium Nodes Instances Running on Different Machines to the Grid Hub Activity: Creating a Small Selenium Grid with a Remote Node Connecting to a Third-Party Service Activity: Running a Test on a Third-party Service Summary Solutions Chapter 1: Getting Started Activity: Automation Brainstorming Activity: Selenium Planning Chapter 2: WebDriver Functionality Activity: Starting and Finalizing a Script Activity: Resizing and Moving Windows with a Selenium Automation Script Chapter 3: WebElement Functionality Activity: Filling in a Form and Submitting It Activity: Locating Elements Chapter 4: Advanced Element Location Activity: Automating Checkout Chapter 5: Waiting for Elements Activity: Creating an Explicit Wait Chapter 6: Page Object Model Activity: Implementing the POM on a Multi-Page Application Activity: Implementing Nested Page Object Instances Chapter 7: Writing Tests Activity: Creating a TestNG Test Chapter 9: Using a Selenium Grid Activity: Running a Script Against a Grid Hub Activity: Creating a Small Selenium Grid with a Remote Node Activity: Running a Test on a Third-Party Service Other Books You May Enjoy Leave a Review - Let Other Readers Know What You Think