Transcript
Page 1: Automation Testing by Selenium Web Driver

Automation Testing by Selenium Web Driver

As efficient as your in-house teamWe provide the people, the ability and the tools so you can be best at what you do.

Page 2: Automation Testing by Selenium Web Driver

No, this is not what we are trying to discuss

Page 3: Automation Testing by Selenium Web Driver

Why automate testing?

Test automation has specific advantages for improving the long-term efficiency of a software team’s testing processes. Test automation supports:

0 Frequent regression testing0 Rapid feedback to developers0 Virtually unlimited iterations of test case execution0 Support for Agile and extreme development

methodologies0 Disciplined documentation of test cases0 Customized defect reporting0 Finding defects missed by manual testing

Page 4: Automation Testing by Selenium Web Driver

Automation Test Life Cycle

Page 5: Automation Testing by Selenium Web Driver

Selenium History0 2004 - at ThoughtWorks in Chicago, Jason Huggins built the Core mode as

"JavaScriptTestRunner" for the testing of an internal Time and Expenses application (Python, Plone). 

0 2006 - at Google, Simon Stewart started work on a project he called WebDriver. Google had long been a heavy user of Selenium, but testers had to work around the limitations of the product. The WebDriver project began with the aim to solve the Selenium’ pain-points.

0 2008 - merging of Selenium and WebDriver. Selenium had massive community and commercial support, but WebDriver was clearly the tool of the future. The joining of the two tools provided a common set of features for all users and brought some of the brightest minds in test automation under one roof. 

0 Shinya Kasatani in Japan became interested in Selenium, he0 Wrapped the core code into an IDE module into the Firefox browser0 Added the ability to record tests as well as play them back in the same plugin.  0 This tool, turned out an eye opener in more ways that was originally thought as it is not

bound to the same origin policy.0 See http://docs.seleniumhq.org/about/history.jsp for more interesting details0 http://docs.seleniumhq.org/about/contributors.jsp

Page 6: Automation Testing by Selenium Web Driver

Selenium World

Page 7: Automation Testing by Selenium Web Driver

Which tool to use?

Page 8: Automation Testing by Selenium Web Driver

Selenium IDE

Page 9: Automation Testing by Selenium Web Driver

Script Syntax

0Selenium scripts that will be run from Selenium-IDE are stored in an HTML text file format. 0 HTML table with three columns.

0The first column identifies the Selenium command0 the second is a target, and 0 the final column contains a value. 0The second and third columns may not require values

depending on the chosen Selenium command, but they should be present.

0Each table row represents a new Selenium command.

Page 10: Automation Testing by Selenium Web Driver

Commonly Used Selenium Commands

Open - opens a page using a URL. click/clickAndWait - performs a click operation, and optionally waits for a new

page to load. verifyTitle/assertTitle - verifies an expected page title. verifyTextPresent - verifies expected text is somewhere on the page. verifyElementPresent - verifies an expected UI element, as defined by its HTML

tag, is present on the page. verifyText - verifies expected text and its corresponding HTML tag are present on

the page. verifyTable - verifies a table’s expected contents. waitForPageToLoad - pauses execution until an expected new page loads.

Called automatically when clickAndWait is used. waitForElementPresent - pauses execution until an expected UI element, as

defined by its HTML tag, is present on the page.

Page 11: Automation Testing by Selenium Web Driver

Locating Elements

0For many Selenium commands, a target is required. This target identifies an element in the content of the web application, and consists of the location strategy followed by the location in the format locatorType=location

0Locating by Identifier : the most common method of locating elements and is the catch-all default when no recognized locator type is used0 the first element with the id attribute value matching the

location will be used. If no element has a matching id attribute, then the first element with a name attribute matching the location will be used

Page 12: Automation Testing by Selenium Web Driver

Locating Elements

0Locating by Id: more limited than the identifier locator type, but also more explicit. 0 Use this when you know an element’s id attribute.

0Locating by Name: will locate the first element with a matching name attribute. If multiple elements have the same value for a name attribute, then you can use filters to further refine your location strategy. 0 The default filter type is value (matching the value

attribute).

Page 13: Automation Testing by Selenium Web Driver

Locating Elements

0 Locating by Xpath : XPath extends beyond (as well as supporting) the simple methods of locating by id or name attributes, and opens up all sorts of new possibilities such as locating the third checkbox on the page.0 Since only xpath locators start with “//”, it is not necessary to

include the xpath= label when specifying an XPath locator.0 Absolute XPaths contain the location of all elements from the root

(html) and as a result are likely to fail with only the slightest adjustment to the application. By finding a nearby element with an id or name attribute (ideally a parent element) you can locate your target element based on the relationship. This is much less likely to change and can make your tests more robust.

Page 14: Automation Testing by Selenium Web Driver

Locating Elements

0Locating Hyperlinks by Link Text: simple method of locating a hyperlink in your web page by using the text of the link. If two links with the same text are present, then the first match will be used.

0Locating by CSS: CSS uses Selectors for binding style properties to elements in the document. These Selectors can be used by Selenium as another locating strategy.0 Most experienced Selenium users recommend CSS as their

locating strategy of choice as it’s considerably faster than XPath and can find the most complicated objects in an intrinsic HTML document.

Page 15: Automation Testing by Selenium Web Driver

Matching Text Patterns

0 Like locators, patterns are a type of parameter frequently required by Selenese commands.

0 Examples of commands which require patterns are 0 verifyTextPresent, 0 verifyTitle, 0 verifyAlert, 0 assertConfirmation, 0 verifyText, and 0 verifyPrompt.

0 link locators can utilize a pattern. 0 Patterns allow you to describe, via the use of special characters,

what text is expected rather than having to specify that text exactly.

Page 16: Automation Testing by Selenium Web Driver

Landing Page

Page 17: Automation Testing by Selenium Web Driver

Recording User Actions

Page 18: Automation Testing by Selenium Web Driver

Save Test Case Script as HTML

Page 19: Automation Testing by Selenium Web Driver

Inspecting Element in mozilla

Page 20: Automation Testing by Selenium Web Driver

Extracting Element by css

Page 21: Automation Testing by Selenium Web Driver

Executing Script by CSS.

Page 22: Automation Testing by Selenium Web Driver

Extracting xpath

Page 23: Automation Testing by Selenium Web Driver

Xpath by Xpath CheckerXpath is a very Helpful to validate Xpath on pages. In order to write xpath expressions we should look at the tree structure of html source code and based On the path for require element we should drive the xpath expression.

Page 24: Automation Testing by Selenium Web Driver

/html/body/a - It will Identify all the elements are using a tag.

/html/body/input - It will Identify all the elements are using input tag.

/html/body/input[1] – It will Identify the first input tag under body.

/html/body/a/img – xpath for a image present on a link.

/html/body/table/tbody/tr[2]/td[1] – It will Identify the element whichis present in 2nd tr contain 1st td inside tbody.

/html/body/div//a – It will identify all “a” tag present in the all div present on html body.

Page 25: Automation Testing by Selenium Web Driver

Generally we use xpath by position along with xpath by attribute.

Ex- /html/body/input[@id=‘UN’]

//input[@value=‘login’]

//a[@href=‘http://www.cuelogic.com/’]

//a[text()=‘Cuelogic’] – This xpath will identify the element by text “Cuelogic”

//a[contains[text(), ‘Cuelogic’]] – This xpath will also identify the element by text“Cuelogic” but if their any spaces at beginning or at end it will consider it.

//td[a] - “[ ]” denotes select all while “/” denote as parent to element path ignore all other elements in tree same Structure.

Htmltag[@PN=‘PV’]

Page 26: Automation Testing by Selenium Web Driver

Identify the Dependent and Independent Elements-

Derived xpath expression for the dependent element from the common parent

//tr[td[a[text()=‘Cuelogic’]]]/td[3]/input

Write a xpath for independent element –

//a[text()=‘Cuelogic’]

Page 27: Automation Testing by Selenium Web Driver

Executing script by xpath

Page 28: Automation Testing by Selenium Web Driver

Edit Script and find element by xpath

Page 29: Automation Testing by Selenium Web Driver

Creating Suite

Page 30: Automation Testing by Selenium Web Driver

Saving Suite

Page 31: Automation Testing by Selenium Web Driver

A few tips

0Saving a test suite does not save the test case.0Make sure that you save the test case every time you

make a change and not just the test suite.0 echo - The Selenese Print Command0Use Find button to see which UI element on the

currently displayed webpage (in the browser) is used in the currently selected Selenium command. This is useful when building a locator for a command’s first parameter

Page 32: Automation Testing by Selenium Web Driver

Selenium IDE – Limitations/Drawbacks

0Firefox only0Can not Specify any condition Statement.0Can not Specify any Looping Statement.0Can not take external text data from External

Resources such as XLS,XML or Database.0 Handing Exceptions is not in scope.

0Note:- To overcome the limitation of Selenium IDE we go for Selenium WebDriver.

Page 33: Automation Testing by Selenium Web Driver

Selenium Web Driver

0WebDriver is a tool for automating web application testing, and in particular to verify that they work as expected.

0 It aims to provide a friendly API that’s easy to explore and understand, easier to use than the Selenium-RC (1.0) API, which will help to make your tests easier to read and maintain.

0 It’s not tied to any particular test framework, so it can be used equally well in a unit testing or from a plain old “main” method.

Page 34: Automation Testing by Selenium Web Driver

Selenium Web Driver – Browser Support

Selenium-WebDriver supports the following browsers along with the operating systems these browsers are compatible with.

0 Google Chrome 0 Internet Explorer 0 Firefox 0 Opera 11.5+0 HtmlUnit 0 Android – 2.3+ for phones and tablets (devices & emulators)0 iOS 3+ for phones (devices & emulators) and 3.2+ for tablets

(devices & emulators)

Page 35: Automation Testing by Selenium Web Driver

WebDriver & Selenium-Server

Some reasons to use the Selenium-Server with Selenium-WebDriver.0You are using Selenium-Grid to distribute your tests

over multiple machines or virtual machines (VMs).0You want to connect to a remote machine that has a

particular browser version that is not on your current machine.

0You are not using the Java bindings (i.e. Python, C#, or Ruby) and would like to use HtmlUnit Driver

Page 36: Automation Testing by Selenium Web Driver

Install/Configure Webdriver with Eclipse.

Page 37: Automation Testing by Selenium Web Driver

Creating Project

Page 38: Automation Testing by Selenium Web Driver
Page 39: Automation Testing by Selenium Web Driver
Page 40: Automation Testing by Selenium Web Driver

Simple Architecture of WebDriver

WEBDRIVER(i)

Remote Webdriver

Firefox Driver Chrome DriverInternet Explorer

Driver

Interface

Protected class

Page 41: Automation Testing by Selenium Web Driver

Selenium First Code

Page 42: Automation Testing by Selenium Web Driver

Browser open by Webdriver.

Page 43: Automation Testing by Selenium Web Driver

Methods:- “findElement” is a method of webdriver interface which isUse to identify required element in the application. This method takes anObject as an argument of type “By”.

Locators:- Webdriver supports 8 types of locators to identify the Elements and all the locators will return the object of the typeWebelements.Types of Locators:-1. By.id(arg)2. By.name(String)3. By.xpath(String xpathExpression)4. By.cssSelector(String Selector)5. By.linkText(String linkText)6. By.partialLinkText(String linkText)7. By.className(String className)8. By.tagName(String Name)

Page 44: Automation Testing by Selenium Web Driver

Locator Code:-

Page 45: Automation Testing by Selenium Web Driver

Locator Code impact.

Page 46: Automation Testing by Selenium Web Driver

Retrieving the value from application

While doing validation we compare excepted result and actual result then we will report the status. Actual result will be taken from application during runtime. In order to do this we use following important Method.1. getTitle() :- This method help us to retrieve the title of the webpage.2. GetcurrentUrl():- This method will retrieve the current url from the address bar of the browser.3. getAttribute(“value”) :- This is used to retrieve property value from the element present in the application. It is basically used to retrieve text from Textbox, password field, Address Field, Path of uploading file and button name.4. isEnable() :- This method is used to check whether the specify elements enable or not. True indicates enable and false indicates disable.5. isSelected() :- It is used to checked whether the specific checkbox or radio button is selected or not.6. getText():- It is used to retrieve the text of the following element.

Page 47: Automation Testing by Selenium Web Driver

Windows Handles

Page 48: Automation Testing by Selenium Web Driver

Browser Operations1. Navigate back to Previous Page:-

driver.navigate().back();

2. Navigate to the next Page:-

driver.navigate().forward();

3. Refresh Mehods :-

driver.navigate().refresh();

Handling Frames

Page 49: Automation Testing by Selenium Web Driver

Q: How do I execute Javascript directly? A: WebDriver driver; // Assigned elsewhere JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("return document.title");

Q: The InternetExplorerDriver does not work well on Vista. How do I get it to work as expected? A:DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer(); capabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); WebDriver driver = new InternetExplorerDriver(capabilities);

Q: Does WebDriver support Javascript alerts and prompts? A: // Get a handle to the open alert, prompt or confirmation Alert alert = driver.switchTo().alert(); // Get the text of the alert or prompt alert.getText(); // And acknowledge the alert (equivalent to clicking "OK") alert.accept(); //And to decline alertAlert.dismiss();

Page 50: Automation Testing by Selenium Web Driver

Q: I need to use a proxy. How do I configure that? A: Proxy configuration is done via the org.openqa.selenium.Proxy class like so: Proxy proxy = new Proxy(); proxy.setProxyAutoconfigUrl("http://youdomain/config"); // We use firefox as an example here. DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability(CapabilityType.PROXY, proxy); // You could use any webdriver implementation here WebDriver driver = new FirefoxDriver(capabilities);

Q: WebDriver fails to start Firefox on Linux due to java.net.SocketException A: If, when running WebDriver on Linux, Firefox fails to start and the error looks like: Caused by: java.net.SocketException: Invalid argument at java.net.PlainSocketImpl.socketBind(Native Method) at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365) at java.net.Socket.bind(Socket.java:571) at org.openqa.selenium.firefox.internal.SocketLock.isLockFree(SocketLock.java:99) at org.openqa.selenium.firefox.internal.SocketLock.lock(SocketLock.java:63) It may be caused due to IPv6 settings on the machine. Execute: sudo sysctl net.ipv6.bindv6only=0

Page 51: Automation Testing by Selenium Web Driver

Framework Execution FlowKeyword driver automation framework:-

Page 52: Automation Testing by Selenium Web Driver
Page 53: Automation Testing by Selenium Web Driver

Selenium RC

Selenium RC comes in two parts. A server which automatically launches and kills browsers, and acts as a HTTP proxy for web requests from them.Client libraries for your favorite computer language.

Page 54: Automation Testing by Selenium Web Driver

References

0http://docs.seleniumhq.org/0Selenium and Section 508 by David Sills

0 http://java.dzone.com/articles/selenium-and-section-508

0Selenium Tutorial for Beginner/Tips for Experts0 http://www.jroller.com/selenium/

0Get Test-Infected With Selenium0 http://net.tutsplus.com/tutorials/tools-and-tips/get-test-infe

cted-with-selenium-2/

0https://code.google.com/p/selenium/

Page 55: Automation Testing by Selenium Web Driver

Books

Page 56: Automation Testing by Selenium Web Driver

Thanks &

enjoy the rest of the code camp


Recommended