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
Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
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

Modern Digital Website Security: Prepare to face any form of malicious web activity and enable your sites to optimally serve your customers.

Containers Trend Report: Explore the current state of containers, containerization strategies, and modernizing architecture.

Low-Code Development: Learn the concepts of low code, features + use cases for professional devs, and the low-code implementation process.

E-Commerce Development Essentials: Considering starting or working on an e-commerce business? Learn how to create a backend that scales.

Related

  • Reversing an Array: An Exploration of Array Manipulation
  • Low Code/No Code Testing Approach for Salesforce Testing
  • HTML5 < time > element: returned!
  • Red-Black Trees in C#: A Guide to Efficient Self-Balancing Binary Search Trees

Trending

  • Embeddings and Vector Databases: A Hands-On Guide!
  • What Is CI/CD? Beginner’s Guide To Continuous Integration and Deployments
  • Accelerating Insights With Couchbase Columnar
  • Harnessing Integration Platforms To Unscramble the Data Mess

13 Sets of APIs Every Tester Must Know in Selenium

This post lists API commands that will be helpful when testing with Selenium, such as navigation commands and Get methods.

Saurabh Dhingra user avatar by
Saurabh Dhingra
·
Jun. 13, 17 · Opinion
Like (5)
Save
Tweet
Share
26.5K Views

Join the DZone community and get the full member experience.

Join For Free

Selenium, a test automation tool most famous for testing web applications, has gained much popularity in the market these days. There is no other tool in the market which comes close to it.

The reasons this open source tool became so popular are its multiple browser support, multiple language support, constant development, and improvement, with a large support community and much more.

In this tutorial, we will talk about 13 APIs and methods which every automation tester must know about are most frequently used. Basic to advanced level Selenium APIs will be covered below:

1. Navigation Commands

navigate().to(url)

To navigate to a particular URL.

Driver.navigate().to("http://qatechhub.com");

get(url)

To navigate to a particular URL.

Driver.get("http://qatechhub.com");

Note: There is no difference between above two commands- both are exactly same and call the exact same piece of code.

navigate().back()

Takes us one back in the browsing history.

Driver.navigate().back();

navigate().forward()

Takes us one forward in the browsing history.

Driver.navigate().forward();

navigate().refresh()

Reloads the page.

Driver.navigate().refresh();

2. Resizing Windows

Set Size

Sets the size of window; the unit used is pixels.

Dimension d = new Dimension(640, 640);
Driver.manage().window().setSize(d);

Maximizing the Window

To set the size of the window as full size according to the screen.

Driver.manage().window().maximize();

The two methods above are used to test the responsiveness of the application, i.e. how application elements render on different screen resolutions.

3. Deleting Cookies

To delete cookies in Selenium, the command below is used:

Driver.manage().deleteAllCookies();

This will not actually go and delete the physical cookies file from your browser, but it bypasses these files so that cookies should not affect your browsing experience.

4. Closing the Browser

close()

Closes the currently active window. 

Driver.close();

quit()

Closes all the windows which were opened in that selenium session.

Driver.quit();

5. Different Get Methods

getCurrentUrl()

This method returns the URL of currently active page as a string.

getPageSource()

This method returns the complete html source code of the page.

getTitle()

This method returns the title of the current page as a string.

getWindowHandle()

This method returns the sessionId or windowHandle (used to uniquely identify a particular window) as a string.

getWindowHandles()

This method returns a set of sessionIds or windowHandles of all opened windows.

6. Searching WebElements

To search for web elements on a web page below methods are used:

findElement()

This method returns a web element which matches the mentioned criteria.

WebElement element = Driver.findElement(By.id("text-box"));

findElements()

This method returns a list of web elements which matches the mentioned criteria.

List<WebElement> allElements = Driver.findElements(By.id("checkbox"));

7. Locators in Selenium

  • By.Id

  • By.Name

  • By.Tagname

  • By.CssSelector

  • By.Xpath

  • By.Classname

  • By.Linktext

  • By.PartialLinktext

For this topic, you must know how to identify locators or identifiers in Selenium.

8. Wait Commands in Selenium

One of the biggest challenges automation engineers face is synchronization between the application under test and Selenium commands. Selenium provides us three different wait commands:

Page Load Timeout

This is the maximum time Selenium waits for a page to load successfully on a browser. If the page takes more than this time, it will throw a timeout exception.

Implicit Wait

This is the maximum time Selenium code waits to interact with a web element before throwing an “Element not found" exception.

Explicit Wait

This wait can be considered a conditional wait and is applied to a particular Web Element with a condition. There are many conditions which can be applied using explicit wait.There are more in wait commands in Selenium which you can explore.

9. Frame Handling

Iframes, or Frames in HTML, are used to divide a web page into multiple sections or to display a web page within another web page, and to interact with any WebElement of a frame. First, we have to switch to that frame, then only WebElements can be identified. Switching to a frame is possible in three ways:

switchTo.frame(index)

Driver.switchTo().frame(1);

switchTo.frame(id)

Driver.switchTo().frame("iframeResult");

switchTo.frame(WebElement)

WebElement frameElement = Driver.findElement(By.className("demo-frame"));
Driver.switchTo().frame(frameElement);


10. Window Handling

When pages open up in multiple windows, we need to switch between these windows to interact with these pages. Selenium provides us with a method called  switch.To.Window() . 

Below is the code to switch to the first window:

childWindow = Driver.getWindowHandles().toArray()[1].toString();
Driver.switchTo().window(childWindow);

11. Alert Handling

An alert is a small box that appears on the display screen with a message and an OK button. The message can be some information or a warning. Alerts can not be ignored. It needs to be accepted or rejected before you can proceed with your actions on the web page. It can only be accepted or rejected.

Alert alert = Driver.switchTo().alert(); //Switching to Alert on same web page

String messageOnAlert = alert.getText(); // Fetching message on Alert box in a String
Thread.sleep(5000); // Explicit wait of 5 seconds so that you can see Alert for sometime

alert.accept(); //Accepting an alert
//or
alert.dismiss();

12. Mouse Operations

To perform mouse operations like mouse hover, drag, and drop, right clicking or double clicking with Selenium actions class is used. 

Mouse Hover:

Actions action = new Actions(Driver);

WebElement mobileElement = Driver.findElement(By.linkText("Mobile & Accessories"));

action.moveToElement(mobileElement).build().perform();

Drag and Drop:

WebElement source = Driver.findElement(By.id("draggable"));

WebElement target = Driver.findElement(By.id("droppable"));

Actions action = new Actions(Driver);

action.dragAndDrop(source, target).build().perform();

13. Working With Dropdowns

To interact with a dropdown using Selenium, select class is used

WebElement dropElement = Driver.findElement(By.id("gh-cat"));

//Object instantiation for selecting values from dropDown
Select dropdown = new Select(dropElement);

//Select value from the  DropDown
dropdown.selectByVisibleText("Watches");

Method in Select class:

  • selectByVisibleText("text")

  • selectByValue("value")

  • selectByIndex("value")

  • deselectByVisibleText("text")

  • deselectByValue("value")

  • deselectByIndex("value")

  • isMultiple() - a method with return type as boolean, true states that dropdown allows multiple selection whereas false states that only one value can be selected.

  • getOptions() - returns a list of web elements which are options of a dropdown

  • getAllSelectedOptions() -returns a list of all selected web elements which are options of a dropdown.

  • getFirstSelectedOption() - returns a web element, e.g. first selected option.

I hope you all learned something from this article. Please share your feedback. Happy learning!

Element

Opinions expressed by DZone contributors are their own.

Related

  • Reversing an Array: An Exploration of Array Manipulation
  • Low Code/No Code Testing Approach for Salesforce Testing
  • HTML5 < time > element: returned!
  • Red-Black Trees in C#: A Guide to Efficient Self-Balancing Binary Search Trees

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • 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: