No part of Credits Author Unmesh Gundecha Reviewers homeranking.info Chandra Dave . Let's create a test for a Selenium testing tools cookbook . eBook versions of every book published, with PDF and ePub files available?. with Selenium WebDriver. Selenium Testing Tools Cookbook - Second Edition Book Cover Unmesh Gundecha. October 6 customer reviews. Over Unmesh Gundecha "Selenium Testing Tools Cookbook" is an incremental guide that will help you learn and use advanced features of.
|Language:||English, Spanish, Arabic|
|Genre:||Children & Youth|
|ePub File Size:||24.39 MB|
|PDF File Size:||18.26 MB|
|Distribution:||Free* [*Regsitration Required]|
Unmesh Gundecha has a master's degree in software engineering and over 13 Learning Selenium Testing Tools with Python, Packt Publishing. Did you know that Packt offers eBook versions of every book published, with PDF and ePub. Gundecha Unmesh. Selenium Testing Tools Cookbook. Файл формата pdf; размером 2,88 МБ. Добавлен пользователем romazhuzha Download Selenium Testing Tools Cookbook by Unmesh Gundecha PDF. By Unmesh Gundecha. In Detail. Web applied sciences have gotten more and more .
Selenium Essentials. We can also capture screenshots during verification of element state, values displayed, or state after an action is completed. We can call the dragAndDrop method in the following way: However, the information contained in this book is sold without warranty, either express or implied. NET and C. Chapter 1 17 Downloading the example code You can download the example code files for all Packt books you have purchased from your account at http:
This booklet also will train you top practices, layout styles, and the way to increase Selenium. Then it demonstrates using layout styles resembling information pushed assessments and PageFactory for development maintainable try out automation. It additionally explains extending Selenium WebDriver API besides imposing customized projects and developing your personal allotted atmosphere to run exams in parallel.
It concludes with tips about integrating Selenium WebDriver with different well known instruments, trying out cellular internet purposes, and shooting movies of try runs. This books presents examples in Java, C , Ruby, and Python. This is a cookbook full of code examples and step by step directions to ease your studying curve.
This ebook additionally offers examples for C , Python, and Ruby users. Show description. Upgrader's Guide. The e-book additionally discusses most likely difficulties you may face whereas upgrading, and indicates you the way to get the main out of the intriguing new good points.
Internet of Things with Intel Galileo.
This publication starts off by way of educating you the necessities of the Intel Galileo board, its elements, how one can twine it, and the way to take advantage of it properly.
Let's try using these methods to locate elements as described in the following sections. Finding elements by the ID attribute Using the id attribute is the most preferable way to locate elements on a page.
The W3C standard recommends that developers provide an id attribute for elements that are unique to each element. Having a unique id attribute provides a very explicit and reliable way to locate elements on the page. While processing the DOM, browsers use id as the preferred way to identify the elements and this provides the fastest locator strategy.
Let's now look at how to use id attributes for locating elements on a login form. Chapter 1 17 Downloading the example code You can download the example code files for all Packt books you have purchased from your account at http: To locate the User Name and Password fields, we can use the id attribute in the following way: You might find multiple elements with similar name attributes and in such a case, the first element on the page with the specified value will be selected, which may not be the element you are looking for.
This may cause the test to fail.
When building a testable application, you should recommend that the developers add the id attribute for key elements as well as other unique attributes to enable the easy location of elements.
Locating Elements 18 Finding elements by the Class attribute Apart from using the id and name attributes, you can also use the class attribute to locate elements.
The class attribute is provided to apply CSS to an element. In this example, the login form elements use the class attribute instead of the id attribute: Selenium WebDriver API provides the findElement method to locate the elements that are required in a test from the page under test.
When locating an element matching specified criteria, it looks through the DOM Document Object Model for matching elements and returns the first matching element to the test.
There's more The WebElement class also supports find methods that find child elements. For example, imagine that there are some duplicate elements on a page.
See also ff The Locating elements using findElements method recipe Locating elements using findElements method Selenium WebDriver provides the findElements method, which enables the acquisition of a list of elements matching the specified search criteria. This method is useful when we want to work with a group of similar elements. For example, we can get all the links displayed on a page or get rows from a table, and so on. In this recipe, we will get all the links and print their targets by using the findElements method.
Let's create a test which will get all the links from a page and verify the count of links and print target for each link as follows: Locating Elements 20 How it works The findElements method returns all the elements matching with the locator specified as a list of WebElements.
In Java, we can use the List class to create an instance of list of WebElements. You can locate a link either by its text or by partial text. Locating links with partial text comes in handy when links have dynamic text. In this recipe, we will see how to use these methods to locate the links on page.
Let's create a sample test to see how locating links work in Selenium WebDriver with the following options. Finding a link by its text Selenium WebDriver's By class provides the linkText method to locate links using the text displayed for the link. In the following example, we will locate the GMail link: Chapter 1 21 Finding a link by partial text Selenium WebDriver's By class also provides a method to locate links using partial text.
This method is useful where developers create links with dynamic text. In this example, a link is provided to open inbox. This link also displays the number of new e-mails which may change dynamically. Here we can use the partialLinkText method to locate the link using a fixed or known portion of the link text, in this case it would be inbox.
The linkText and partialLinkText locator methods query the driver for all the links that meet the specified text and returns the matching link s. You can also locate links using id, name, or class attributes if developers have provided these attributes. Locating elements based on text can cause issues while testing applications in multiple locales.
Using parameterized text locator value could work in such applications. This comes in handy when you want to locate elements using their tag name. In this recipe, we will briefly see how to use the tagName locator method. Locating Elements 22 How to do it Let's assume you have a single button element on a page.
You can locate this button by using its tag in the following way: We can do this in the following way: The tagName locator method queries the DOM and returns a list of matching elements for the specified tag name. This method may not be reliable while locating individual elements and the page might have multiple instances of these elements.
CSS was introduced to keep the presentation information separate from the markup or content. These patterns, called selectors, may range from simple element names to rich contextual patterns.
If all conditions in the pattern are true for a certain element, the selector matches the element and the browser applies the defined style in CSS syntax. This is a much faster and more reliable way to locate the elements when compared with XPaths. Finding elements with absolute path CSS absolute paths refer to the very specific location of the element considering its complete hierarchy in the DOM.
Here is an example where the Username Input field is located using the absolute path. While providing absolute path, a space is given between the elements. If this changes, the locator will fail to find the element. Finding elements with relative path With relative path we can locate an element directly, irrespective of its location in the DOM.
This is same as the className and id locator methods. However, there is another strategy where we can use any other attribute of the element that is not covered in the By class. Finding elements using the Class selector While finding elements using the CSS selector, we can use the Class attribute to locate an element. This can be done by specifying the type of HTML tag, then adding a dot followed by the value of the class attribute in the following way: There is also a shortcut where you can put a.
However, this will return all the elements with class as login and the test may not return the correct element. This can be done by specifying the type of HTML tag, then entering a hash followed by the value of the Class attribute, as shown: There is also a shortcut where you can enter and a class attribute value and ignore the HTML tag.
However, this will return all the elements with the id set as username and the test may not return the correct element. This has to be used very carefully. Finding elements using attributes selector Apart from the class and id attributes, CSS selectors also enable the location of elements using other attributes of the element. Let's use some other attribute to locate an element. Chapter 1 25 You might come across situations where one attribute may not be sufficient to locate an element and you need to combine additional attributes for a precise match.
This is very useful for testing applications where attribute values are dynamically assigned and change every time a page is requested. For example, ASP. NET applications exhibit this kind of behavior, where IDs are generated dynamically. The following table explains the use of CSS partial match syntax: Locating Elements 26 How it works The majority of browsers support CSS parsing for applying styles to these elements.
CSS selectors provide various methods, rules, and patterns to locate the element from a page. This is also a more reliable and fast method when compared with XPath locators.
Using CSS selector, the test can locate elements in multiple ways using Class, ID, attribute values, and text contents as described in this recipe. The XPath language is based on a tree representation of the XML document and provides the ability to navigate around the tree, selecting nodes using a variety of criteria. Locating elements with XPath works very well with a lot of flexibility.
However, this is the least preferable locator strategy due its slow performance. This means that with XPath we can locate a parent element using a child element. In this recipe, we will explore some basic XPath queries to locate elements and then examine some advanced XPath queries. Selenium WebDriver provides the xpath method for locating elements using XPaths.
Chapter 1 27 Finding elements with absolute path Similar to CSS absolute paths, XPath absolute paths refer to the very specific location of the element, considering its complete hierarchy in the DOM. Here is an example where Username Input field is located using the absolute path. While providing absolute path a space is given between the elements.
If this changes, the locator will fail to get the element. Finding elements with relative path With relative path, we can locate an element directly irrespective of its location in the DOM. There could be multiple elements matching the specified XPath query. If the element is not the first element, we can also locate the element by using its index in DOM.
In the following example, the Username field is located using the ID attribute: Locating Elements 28 The same result can be achieved by using XPath and operator.
This is very useful for testing applications where attributes values are dynamically assigned and change every time a page is requested. NET applications exhibit this kind of behavior where IDs are generated dynamically.
The following table explains the use of these XPath functions: Syntax Example Description starts- with input[starts-with id,'ctrl' ] Starting with: Chapter 1 29 Matching any attribute using a value XPath matches the attribute for all the elements for a specified value and returns the element. For example, in the following XPath query, 'userName' is specified. XPath will check all the elements and their attributes to see if they have this value and return the matching element.
This can be applied to any other element structure from your application. Here is the graphical representation of the HTML elements: Locating Elements 30 Axis Description Example Result ancestor Selects all ancestors parent, grandparent, and so on of the current node. You can find more about XPath axis at http: XPath is a powerful language for querying and processing DOM in browsers. XPath is used to navigate through elements and attributes in a DOM.
XPath provides rules, function, and syntax to locate the elements. Using the xpath method of the By class we can locate elements using XPath syntax. You can search for the parent element if you know the child or you can locate a child element using its relationship with the parent and siblings.
Using XPath, a test can locate elements in multiple ways based on the structure of the document, attribute values, text contents and so on, as described in this recipe.
Locating elements using text While testing web applications, you will also encounter situations where developers don't assign any attributes to the elements and it becomes difficult to locate elements.
In this recipe, we will explore methods to locate elements using text values. For locating elements by using their text contents, CSS selectors and XPath provide methods to find text within the elements. If an element contains specific text, this will return the element back to the test. For example, a test wants to locate the cell of a table using its contents in the following way: The contains pseudo-class may not work with browsers that don't natively support CSS selectors.
Also, it has been deprecated from CSS3 specification. As an alternative for contains pseudo-class, you can use the innerText attribute does not work with Firefox or textContent attribute for Firefox in the following ways: Using XPath text function XPath provides the text function which can be used to see if an element contains the specified text in the following way: The text function returns the complete text from the element and the contains function checks for the specific value that we have mentioned.
Finding elements using exact text value in XPath With XPath, elements can be located by exact text value in the following way: CSS selector and XPath provide methods with which to locate elements based on their text contents.
This approach comes in handy when elements don't have enough attributes or when no other strategies work when attempting to locate these elements.
For locating elements using their text, both CSS selector and XPath search through the DOM for elements that have the specified text value and return the matching element s. In this recipe, we will explore some advanced CSS selectors for locating elements. Chapter 1 33 How to do it Let's explore advanced CSS selectors such as adjacent sibling combinators and pseudo- classes as described in the following sections.
Finding child elements CSS selectors provide various ways to locate child elements from parent elements. For example, to locate the Username Field in the login form, we can use the following selector. The following table shows some of the structural pseudo-classes used to locate child elements: Pseudo-class Example Description: Here are few more adjacent sibling combinators for locating siblings: This will locate Description for Product 2.
This will locate Description for Product 3. Using user action pseudo-classes Using the user action: You can also locate elements using: Using UI state pseudo-classes Using UI state pseudo-classes, we can locate elements for various states such as control is enabled, disabled, and checked. The following table describes these in detail: Visit http: These selectors use the familiar CSS Selector syntax to allow developers to quickly and easily identify page elements to operate upon with the jQuery library methods.
In this example, we will locate all the selected checkboxes on a page by calling the find method. For more details and a list of available jQuery selectors, please visit http: For using jQuery selectors, the page under test should have jQuery library loaded. If your application does not use jQuery, you can load the jQuery on the page by attaching jQuery library at runtime with the following utility methods: If the page does not have the jQuery object defined, the injectjQueryIfNeeded method will call the injectjQuery method to attach the jQuery library to the page header at runtime.
You may change the version used in this example to the latest version of the jQuery library. Locating table rows and cells While working with tables, we can locate the rows and cells effectively by using a set of the By class methods. In this recipe, we will see how to locate rows and columns in table. Let's create a simple test that will print data from a table, locating its rows and columns as follows: In the sample test, the table can be located as a WebElement using its ID as follows: These are rows of a table.
The test iterates through the row and columns to print the data in the following way: In the following example, CSS selector is used to locate the first cell of the second row in the table: Chapter 1 39 Similarly using XPath, it can be done in the following way: However, you will come across complex tables where other than data, table cells have child elements for user interaction.
For example, in an e-commerce application when you open the shopping cart page, it looks a simple table but inside there are many complex elements. Locating Elements 40 Furthermore, these elements are dynamically created based on user actions and may have attribute values generated at runtime. Locating these elements may become a challenging task. In this recipe, we will explore strategies to locate child elements within tables using CSS and XPath.
Here is sample table that lists users of a system and their details including what access rights are assigned to these users.
A test needs to select a given checkbox and see if the selected access is granted to the user. If we look at the code for this table, each record or row has the following code: In this example, we want to grant user Nash with admin access. This can be done using CSS selectors in the following way: Chapter 1 41 We can also use XPath in the following way: Parent, child, and sibling in CSS or XPath axes become a great help in correlating users with roles and developing a generic locator strategy for this feature.
In simple terms, these strategies help to locate elements based on the element's relationship with other elements in a document. Coming back to the problem, first we need to find a unique way to identify a user in the table.
For this, we will locate a cell which contains username. We will locate this cell using its inner text in the following way: CSS XPath td: This is the second cell from the cell containing username. The next sibling of this label will be the checkbox we are looking for. In this chapter, we will explore how these APIs can be used to build simple to complex test steps.
This chapter will also help in overcoming some common issues while building tests with Selenium WebDriver. The chapter examples are created with Selenium WebDriver Java bindings.
The sample code for this chapter contains some of these recipes implemented with C , Ruby, and Python. Checking an element's text While testing a web application, we need to verify that elements are displaying correct values or text on the page. Sometimes, we need to retrieve text or value from an element into a variable at runtime and later use it at some other place in the test flow.
In this recipe, we will retrieve and verify text from an element by using the WebElement class' getText method. Here, we will create a test that locates an element and then retrieves text from the element in a string variable.
We will verify contents of this string for correctness. The WebElement class' getText method returns value of the innerText attribute of the element. We can use these methods in the following way: There will be tests that need to verify that element attributes are set correctly. We can retrieve and verify an element's attribute by using the getAttribute method of the WebElement class. In this recipe, will check the attribute value of an element by using the getAttribute method.
Create a test which locates an element and check its attribute value as follows: By passing the name of the attribute to the getAttribute method, it returns the value of the attribute back to the test. There may be tests that need to verify that correct styles have been applied to the elements. In this recipe, we will use the getCSSValue function to check the style attribute defined for an element.
Let's create a test which reads the CSS width attribute and verifies the value. Chapter 2 47 How it works The Actions class implements the builder pattern to create a composite action containing a group of other actions.
In this recipe, we will use the Actions class to build a chain of events to select rows in a table. Let's create a test to select the multiple rows from different positions in a table using the Ctrl key. We can select multiple rows by selecting the first row, then holding the Ctrl key, and then selecting another row and releasing the Ctrl key.
This will select the desired rows from the table. Working with Selenium API 48 builder. We need to create an instance of the Actions class by passing the instance of driver class to the constructor in the following way: This will require performing a click operation on the first row, then holding the Ctrl key using keyDown , clicking on the end row, and then releasing the Ctrl key by calling keyUp.
The Actions class provides various methods to perform keyboard and mouse operations. Finally the test will perform this composite action by calling the perform method of the Actions class. In the previous example, we used keyDown Keys. Actions may not work properly for elements that are not visible or enabled.
Before using these events, make sure that elements are visible and enabled. See also ff The Performing double-click on an element recipe Chapter 2 49 Performing double-click on an element There will be elements in a web application that need double-click events fired for performing some actions. For example, double-clicking on a row of a table will launch a new window.
In this recipe, we will use the Actions class to perform double-click operations. Let's create a test that locates an element for which a double-click event is implemented. When we double-click on this element, it changes its color. For performing double-click on an element, doubleClick method of the Actions class is called.
For calling this method, we need to create an instance of Actions class as follows: We can call the doubleClick method by passing the element as follows: As seen in earlier recipes the Actions class supports advanced user interactions such as firing various mouse and keyboard events. We can build simple or complex chains of events using this class.
In this recipe, we will use the Actions class to perform drag-and-drop operations. Let's implement a test which will perform a drag-and-drop operation on a page using the Actions class. Chapter 2 51 How it works For dragging an element on to another element and dropping it, we need to locate these elements and pass them to the dragAndDrop method of the Actions class.