Selenium Basic FAQS
Selenium Basic FAQS
Selenium is not just a single tool or a utility, rather a package of several testing tools and
for the same reason, it is referred to as a Suite. Each of these tools is designed to cater
different testing and test environment requirements.
Record and Selenium IDE supports Selenium RC doesn't supports WebDriver doesn't su
Playback record and playback record and playback feature record and playback f
feature
Object Oriented Selenium IDE is not an Selenium RC is semi object WebDriver is a purel
object oriented tool oriented tool oriented tool
Dynamic Finders Selenium IDE doesn't Selenium RC doesn't support WebDriver supports
(for locating web support dynamic finders dynamic finders dynamic finders
elements on a
webpage)
Handling Alerts, Selenium IDE doesn't Selenium RC doesn't explicitly WebDriver offers a w
Navigations, explicitly provides aids to provides aids to handle alerts, range of utilities and
Dropdowns handle alerts, navigations, navigations, dropdowns that helps in handling
dropdowns navigations, and drop
efficiently and effecti
Feature Selenium IDE Selenium RC WebDriver
Listener Support Selenium IDE doesn't Selenium RC doesn't support WebDriver supports
support listeners listeners implementation of Li
Origin is a sequential combination of scheme, host, and port of the URL. For example,
for a URL https://www.softwaretestinghelp.com/resources/, the origin is a combination of
http, softwaretestinghelp.com, 80 correspondingly.
Thus the Selenium Core (JavaScript Program) cannot access the elements from an
origin that is different from where it was launched. For Example, if I have launched the
JavaScript Program from “https://www.softwaretestinghelp.com”, then I would be able to
access the pages within the same domain such as
“https://www.softwaretestinghelp.com/resources” or
“https://www.softwaretestinghelp.com/istqb-free-updates/”. The other domains like
google.com, seleniumhq.org would no more be accessible.
So, In order to handle the same origin policy, Selenium Remote Control was introduced.
Q #15) When should I use Selenium Grid?
Selenium Grid can be used to execute same or different test scripts on multiple
platforms and browsers concurrently so as to achieve distributed test execution, testing
under different environments and saving execution time remarkably.
Q #16) What do we mean by Selenium 1 and Selenium 2?
Selenium RC and WebDriver, in a combination, are popularly known as Selenium 2.
Selenium RC alone is also referred to as Selenium 1.
Q #17) Which is the latest Selenium tool?
WebDriver
FirefoxDriver
InternetExplorerDriver
ChromeDriver
SafariDriver
OperaDriver
AndroidDriver
IPhoneDriver
HtmlUnitDriver
Q #20) What are the different types of waits available in WebDriver?
There are two types of waits available in WebDriver:
1. Implicit Wait
2. Explicit Wait
Implicit Wait: Implicit waits are used to provide a default waiting time (say 30 seconds)
between each consecutive test step/command across the entire test script. Thus, the
subsequent test step would only execute when the 30 seconds have elapsed after
executing the previous test step/command.
Explicit Wait: Explicit waits are used to halt the execution till the time a particular
condition is met or the maximum time has elapsed. Unlike Implicit waits, explicit waits
are applied for a particular instance only.
Q #21) How to type in a textbox using Selenium?
The user can use sendKeys(“String to be entered”) to enter the string in the textbox.
Syntax:
WebElement username = drv.findElement(By.id(“Email”));
// entering username
username.sendKeys(“sth”);
Q #22) How can you find if an element in displayed on the screen?
WebDriver facilitates the user with the following methods to check the visibility of the
web elements. These web elements can be buttons, drop boxes, checkboxes, radio
buttons, labels etc.
1. isDisplayed()
2. isSelected()
3. isEnabled()
Syntax:
isDisplayed():
boolean buttonPresence = driver.findElement(By.id(“gbqfba”)).isDisplayed();
isSelected():
boolean buttonSelected = driver.findElement(By.id(“gbqfba”)).isSelected();
isEnabled():
boolean searchIconEnabled = driver.findElement(By.id(“gbqfb”)).isEnabled();
Q #23) How can we get a text of a web element?
Get command is used to retrieve the inner text of the specified web element. The
command doesn’t require any parameter but returns a string value. It is also one of the
extensively used commands for verification of messages, labels, errors etc displayed on
the web pages.
Syntax:
String Text = driver.findElement(By.id(“Text”)).getText();
Q #24) How to select value in a dropdown?
The value in the dropdown can be selected using WebDriver’s Select class.
Syntax:
selectByValue:
Select selectByValue = new Select(driver.findElement(By.id(“SelectID_One”)));
selectByValue.selectByValue(“greenvalue”);
selectByVisibleText:
Select selectByVisibleText = new Select (driver.findElement(By.id(“SelectID_Two”)));
selectByVisibleText.selectByVisibleText(“Lime”);
selectByIndex:
Select selectByIndex = new Select(driver.findElement(By.id(“SelectID_Three”)));
selectByIndex.selectByIndex(2);
Q #25) What are the different types of navigation commands?
Following are the navigation commands:
navigate().back() – The above command requires no parameters and takes back the
user to the previous webpage in the web browser’s history.
Sample code:
driver.navigate().back();
navigate().forward() – This command lets the user to navigate to the next web page
with reference to the browser’s history.
Sample code:
driver.navigate().forward();
navigate().refresh() – This command lets the user to refresh the current web page there
by reloading all the web elements.
Sample code:
driver.navigate().refresh();
navigate().to() – This command lets the user to launch a new web browser window and
navigate to the specified URL.
Sample code:
driver.navigate().to(“https://google.com”);
Q #26) How to click on a hyper link using linkText?
driver.findElement(By.linkText(“Google”)).click();
The command finds the element using link text and then click on that element and thus
the user would be re-directed to the corresponding page.
The above-mentioned link can also be accessed by using the following command.
driver.findElement(By.partialLinkText(“Goo”)).click();
The above command finds the element based on the substring of the link provided in the
parenthesis and thus partialLinkText() finds the web element with the specified substring
and then clicks on it.
Select iframe by id
driver.switchTo().frame(“ID of the frame“);
Locating iframe using tagName
driver.switchTo().frame(driver.findElements(By.tagName(“iframe”).get(0));
Locating iframe using index
frame(index)
driver.switchTo().frame(0);
frame(Name of Frame)
driver.switchTo().frame(“name of the frame”);
frame(WebElement element)
Select Parent Window
driver.switchTo().defaultContent();
Q #28) When do we use findElement() and findElements()?
findElement(): findElement() is used to find the first element in the current web page
matching to the specified locator value. Take a note that only first matching element
would be fetched.
Syntax:
WebElement element = driver.findElements(By.xpath(“//div[@id=’example’]//ul//li”));
findElements(): findElements() is used to find all the elements in the current web page
matching to the specified locator value. Take a note that all the matching elements
would be fetched and stored in the list of WebElements.
Syntax:
List <WebElement> elementList
= driver.findElements(By.xpath(“//div[@id=’example’]//ul//li”));
Q #29) How to find more than one web element in the list?
At times, we may come across elements of the same type like multiple hyperlinks,
images etc arranged in an ordered or unordered list. Thus, it makes absolute sense to
deal with such elements by a single piece of code and this can be done using
WebElement List.
Sample Code
1 // Storing the list
List <WebElement> elementList =
2
driver.findElements(By.xpath("//div[@id='example']//ul//li"));
3 // Fetching the size of the list
4 int listSize = elementList.size();
5 for (int i=0; i<listSize; i++)
6{
7 // Clicking on each service provider link
8 serviceProviderLinks.get(i).click();
// Navigating back to the previous page that stores link to service
9
providers
10 driver.navigate().back();
11 }
Q #30) What is the difference between driver.close() and driver.quit command?
close(): WebDriver’s close() method closes the web browser window that the user is
currently working on or we can also say the window that is being currently accessed by
the WebDriver. The command neither requires any parameter nor does it return any
value.
quit(): Unlike close() method, quit() method closes down all the windows that the
program has opened. Same as close() method, the command neither requires any
parameter nor does is return any value.
Q #31) Can Selenium handle windows based pop up?
Selenium is an automation testing tool which supports only web application testing.
Therefore, windows pop up cannot be handled using Selenium.
Thus, In the following scenario, we have used Action Interface to mouse hover on a drop
down which then opens a list of options.
Sample Code:
1 // Instantiating Action Interface
2 Actions actions=new Actions(driver);
3 // howering on the dropdown
actions.moveToElement(driver.findElement(By.id("id of the
4
dropdown"))).perform();
5 // Clicking on one of the items in the list options
6 WebElement subLinkOption=driver.findElement(By.id("id of the sub link"));
7 subLinkOption.click();
Q #36) How to retrieve CSS properties of an element?
The values of the css properties can be retrieved using a get() method:
Syntax:
driver.findElement(By.id(“id“)).getCssValue(“name of css attribute”);
driver.findElement(By.id(“id“)).getCssValue(“font-size”);
Q #37) How to capture screenshot in WebDriver?
1 import org.junit.After;
2 import org.junit.Before;
3 import org.junit.Test;
4 import java.io.File;
5 import java.io.IOException;
6 import org.apache.commons.io.FileUtils;
7 import org.openqa.selenium.OutputType;
8 import org.openqa.selenium.TakesScreenshot;
9 import org.openqa.selenium.WebDriver;
10 import org.openqa.selenium.firefox.FirefoxDriver;
11
12 public class CaptureScreenshot {
13 WebDriver driver;
14 @Before
15 public void setUp() throws Exception {
16 driver = new FirefoxDriver();
17 driver.get("https://google.com");
18 }
19 @After
20 public void tearDown() throws Exception {
21 driver.quit();
22 }
23
24 @Test
25 public void test() throws IOException {
26 // Code to capture the screenshot
File scrFile =
27
((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
28 // Code to copy the screenshot in the desired location
@Test: Annotation lets the system know that the method annotated as @Test is
a test method. There can be multiple test methods in a single test script.
@Before: Method annotated as @Before lets the system know that this method
shall be executed every time before each of the test methods.
@After: Method annotated as @After lets the system know that this method shall
be executed every time after each of the test method.
@BeforeClass: Method annotated as @BeforeClass lets the system know that
this method shall be executed once before any of the test methods.
@AfterClass: Method annotated as @AfterClass lets the system know that this
method shall be executed once after any of the test methods.
@Ignore: Method annotated as @Ignore lets the system know that this method
shall not be executed.
Q #40) What is TestNG and how is it better than Junit?
TestNG is an advanced framework designed in a way to leverage the benefits by both
the developers and testers. With the commencement of the frameworks, JUnit gained
enormous popularity across the Java applications, Java developers and Java testers
with remarkably increasing the code quality. Despite being easy to use and
straightforward, JUnit has its own limitations which give rise to the need of bringing
TestNG into the picture. TestNG is an open source framework which is distributed under
the Apache Software License and is readily available for download.
TestNG with WebDriver provides an efficient and effective test result format that can, in
turn, be shared with the stakeholders to have a glimpse on the product’s/application’s
health thereby eliminating the drawback of WebDriver’s incapability to generate test
reports. TestNG has an inbuilt exception handling mechanism which lets the program to
run without terminating unexpectedly.
There are various advantages that make TestNG superior to JUnit. Some of them are:
7 @Test(priority=1)
8 public void method2() {
9 }
10 @Test(priority=2)
11 public void method3() {
12 }
13 }
Test Execution Sequence:
1. Method1
2. Method2
3. Method3
Q #42) What is a framework?
The framework is a constructive blend of various guidelines, coding standards, concepts,
processes, practices, project hierarchies, modularity, reporting mechanism, test data
injections etc. to pillar automation testing.
1 JXL supports “.xls” format i.e. binary based format. JXL doesn’t POI jar supports all of these for
support Excel 2007 and “.xlsx” format i.e. XML based format
2 JXL API was last updated in the year 2009 POI is regularly updated and re
3 The JXL documentation is not as comprehensive as that of POI POI has a well prepared and hi
comprehensive documentation
4 JXL API doesn’t support rich text formatting POI API supports rich text form
5 JXL API is faster than POI API POI API is slower than JXL API
Q #47) What is the difference between Selenium and QTP?
Feature Selenium Quick Test Professional (QTP)
Browser Selenium supports almost all the popular QTP supports Internet Explorer, Firefox
Compatibility browsers like Firefox, Chrome, Safari, and Chrome. QTP only supports Windows
Internet Explorer, Opera etc Operating System
Distribution Selenium is distributed as an open source QTP is distributed as a licensed tool and is
tool and is freely available commercialized
Application Selenium supports testing of only web based QTP supports testing of both the web
under Test applications based application and windows based
application
Object Object Repository needs to be created as a QTP automatically creates and maintains
Repository separate entity Object Repository
Vendor Support As Selenium is a free tool, user would not get Users can easily get the vendor’s support
the vendor’s support in troubleshooting in case of any issue
issues
Q #48) Can WebDriver test Mobile applications?
WebDriver cannot test Mobile applications. WebDriver is a web-based testing tool,
therefore applications on the mobile browsers can be tested.
In Selenium, objects can be stored in an excel sheet which can be populated inside the
script whenever required.
Hope in this article you will find answers to most frequently asked Selenium and
WebDriver Interview questions. The answers provided here are also helpful for
understanding the Selenium basics and advanced WebDriver topics.