1. What is Automation Testing?
Automation testing is the process of testing a
software or application using an automation testing tool to find the defects.
In this process, executing the test scripts and generating the results are
performed automatically by automation tools. It is required when we have a huge
amount of regression test
cases. Some most popular tools to do automation testing are HP
QTP/UFT, Selenium WebDriver,
etc.,
2. What are the benefits of Automation Testing?
This is one of the common interview questions in
any Automation testing job.
1.
Saves time and money.
Automation testing is faster in execution.
2.
Reusability of code.
Create one time and execute multiple times with less or no maintenance.
3.
Easy reporting. It generates
automatic reports after test execution.
4.
Easy for compatibility
testing. It enables parallel execution in the combination of different OS and
browser environments.
5.
Low-cost maintenance. It
is cheaper compared to manual testing in a long run.
6.
Automated testing is
more reliable.
7.
Automated testing is
more powerful and versatile. Automation tools allow us to integrate with Cross Browser
Testing Tools, Jenkins, Github,
etc.,
8.
It is mostly used for
regression testing. Supports execution of repeated test cases.
9.
Minimal manual
intervention. Test scripts can be run unattended.
10.
Maximum coverage. It
helps to increase the test coverage.
3. What are the challenges and limitations of Selenium
WebDriver?
As we all know Selenium WebDriver is a tool that
automates the browser to mimic real user actions on the web. Selenium is a free
open source testing tool. Some of the challenges with Selenium WebDriver are as
follows
1.
We cannot test the
windows application
2.
We cannot test mobile
apps
3.
Limited reporting
4.
Handling dynamic
Elements
5.
Handling page load
6.
Handling pop up windows
7.
Handling captcha
Read the detailed explanation on the challenges and
limitations of Selenium WebDriver
4. What type of tests have you automated?
Our main focus is to automate test cases to
do Regression testing, Smoke & Sanity
testing. Sometimes based on the project and the test time
estimation, we do focus on End to End testing.
5. How many test cases you have automated per day?
It is one of the Selenium Tricky Interview
Questions.
Actually, it depends on Test case scenario
complexity and length. I did automate 2-5 test scenarios per day when the
complexity is limited. Sometimes just 1 or fewer test scenarios in a day when
the complexity is high.
6. What is a Framework?
A framework defines a set of rules or best
practices that we can follow in a systematic way to achieve the desired
results. There are different types of automation frameworks and the most common
ones are:
·
Data-Driven Testing
Framework
·
Keyword Driven Testing
Framework
·
Hybrid Testing Framework
·
Behavioural Driven
Framework
Detailed
Explanation: Types of Framework
7. What type of test cases to be automated?
Types of Test Cases To Automate are
·
Data-driven test cases
·
Test cases with higher
complexity
·
Test case with many
database updates
·
The test execution rate
is high
·
Smoke/Critical tests
·
Tests with several
combinations
·
Graph test cases
·
Higher manual execution
time
Read in detail explanation on types of test
cases to be automated here
8. What type of test cases not to be automated?
Types of Test Cases Not To Be Automated are
·
Subjective Validation
·
New Functionalities
·
Strategic Development
·
User Experience
·
Complex Functionality
·
Quality Control
·
Low return on investment
·
Installation and setup
testing
Read in detail explanation on types of test
cases not to be automated here
9. What are the advantages of the Test Automation Framework?
1.
Reusability of code.
2.
Easy reporting.
3.
Low-cost maintenance.
4.
Maximum Coverage
5.
Minimal manual
intervention
10. Have you created any Framework?
If you are a beginner: You can say “No, I didn’t get a chance to create framework from
the scratch. I have used the framework which is already available. My
contribution is mostly in creating test cases by using the existing framework.”
If you are a beginner but have good knowledge
on creating framework: You
can say “Yes, I have involved in developing framework along with other
automation tester in my company.”
If you are an experienced tester: You can say “I have contributed in developing framework.” or
You can say “Yes, I have created framework from the scratch. There was no
automation process in my previous company. I designed the framework from the
scratch.”
11. How would you explain the Selenium test automation
framework in the interview?
Here we have clearly explained each component of
the Framework. Check this post to learn more about how to explain the
selenium test automation framework to the interviewer.
12. Why do you prefer Selenium Automation Tool?
I prefer Selenium Automation Tool because some
of the benefits of Selenium to do automation testing are
·
Free
and open source – It is a free open
source tool. There is no need to allot budget for this tool
·
Help
– Have large user
base and helping communities.
·
Cross-browser
compatibility – It works on almost all popular browsers such as Chrome,
Firefox, Internet Explorer, and Safari.
·
Cross
Platform compatibility – It
works on platforms such as Windows, Linux, Mac.
·
Multiple
programming languages – It
supports programming languages such as Java,
Phyton, Perl, Php, C#, Ruby, etc.,
·
Parallel
Execution – Selenium Grid
supports parallel execution of Selenium Scripts.
·
Continuous
Integration – We can achieve
nightly execution using Jenkins.
13. What is Selenium?
Selenium is an open source (free) automated
testing suite to test web applications. It supports different platforms and
browsers. It has gained a lot of popularity in terms of web-based automated
testing and giving a great competition to the famous commercial tool HP QTP
(Quick Test Professional) AKA HP UFT (Unified Functional Testing).
Selenium is a set of different software tools.
Each tool has a different approach in supporting web based automation testing.
It has four components namely,
i.
Selenium IDE (Selenium
Integrated Development Environment)
ii.
Selenium RC (Selenium
Remote Control)
iii.
Selenium WebDriver
iv.
Selenium Grid
14. What is Selenium IDE?
Selenium IDE (Integrated Development
Environment) is a Firefox plugin. It is the simplest framework in the Selenium
Suite. It allows us to record and playback the scripts. Even though we can
create scripts using Selenium IDE, we need to use Selenium RC or Selenium
WebDriver to write more advanced and robust test cases.
15. What is Selenese?
Selenese is the language which is used to write
test scripts in Selenium IDE.
16. Which is the only browser that supports Selenium IDE to be
used?
Firefox
17. What is Selenium RC?
Selenium RC AKA Selenium Remote control /
Selenium 1. Selenium Remote Control was the main Selenium project for a long
time before the WebDriver merge brought up Selenium 2. Selenium 1 is still
actively supported (in maintenance mode). It relies on JavaScript for
automation. It supports Java, Javascript, Ruby, PHP, Python, Perl and C#.
It supports almost every browser out there.
18. What is Selenium WebDriver?
Selenium WebDriver AKA Selenium 2 is a browser
automation framework that accepts commands and sends them to a browser. It is
implemented through a browser-specific driver. It controls the browser by
directly communicating with it. Selenium WebDriver supports Java, C#, PHP,
Python, Perl, Ruby.
Learn Selenium WebDriver
Architecture
19. What is Selenium Grid?
Selenium Grid is a tool used together with
Selenium RC to run tests on different machines against different
browsers in parallel. That is, running multiple tests at the same time against
different machines running different browsers and operating systems.
In simple words, it is used to distribute your
test execution on multiple platforms and environments concurrently.
20. When do you 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
21. What are the advantages of Selenium Grid?
It allows running test cases in parallel thereby
saving test execution time.
It allows multi-browser testing
It allows us to execute test cases on multi-platform
22. What is a hub in Selenium Grid?
A hub is a server or a central point that
controls the test executions on different machines.
23. What is a node in Selenium Grid?
Node is the machine which is attached to the
hub. There can be multiple nodes in Selenium Grid.
24. What are the types of WebDriver APIs available in Selenium?
·
Firefox Driver
·
Gecko Driver
·
InternetExplorer Driver
·
Chrome Driver
·
HTMLUnit Driver
·
Opera Driver
·
Safari Driver
·
Android Driver
·
iPhone Driver
·
EventFiringWebDriver
25. Which WebDriver implementation claims to be the fastest?
The fastest implementation of WebDriver is the
HTMLUnitDriver. It is because the HTMLUnitDriver does not execute tests in the
browser. Starting a browser and running test cases took more time compared to
running the scripts without a browser. HTMLUnitDriver took a simple HTTP
request-response mechanism for test case execution.
Learn more on How To Do Headless
Browser Testing using Selenium WebDriver
26. What are the Programming Languages supported by Selenium WebDiver?
·
Java
·
C#
·
Python
·
Ruby
·
Perl
·
PHP
27. Which language is not supported by selenium?
Selenium supports all major programming
languages such as Java, C#, Perl, Python, Ruby, PHP, Scala and Groovy. As of
today, others are not compatible.
28. What are the Operating Systems supported by Selenium
WebDriver?
·
Windows
·
Linux
·
Mac OS X
·
iOS
·
Android
29. What are the testing types that can be supported by
selenium?
Testing types that can be supported by Selenium
are as follows:
·
Functional Testing
·
Regression Testing
·
Retesting
·
Acceptance Testing
·
End-to-End Testing
·
Smoke Testing
·
Sanity Testing
·
Responsive Testing
·
Cross Browser Testing
·
UI Testing
·
Integration Testing
30. How many parameters can selenium commands have at minimum?
There are four parameters that you have to pass
in Selenium are
·
Host
·
Port Number
·
Browser
·
URL
Host: It is the parameter which we use to bind Selenium to a
specific IP. Usually, we run selenium tests on our local machine so the value
will be ‘localhost’. You can sepcify IP address instead of localhost.
java -jar <selenium server standalone jar
name> -host <Your IP Address>
Port Number: TCP/IP port which is used to connect selenium tests to the
selenium grid hub. Default port hub is 4444.
java -jar <selenium server standalone jar name> -role hub -port 4444
Make sure no other application in your system is
using this port. You may face an exception like Exception in thread “main”
java.net.BindException: Selenium is already running on port 4444. Or some other
service is.
If this occurs you can either shutdown the other
process that is using port 4444, or you can tell Selenium-Grid to use a
different port for its hub. Use the -port option for changing the port used by
the hub.
java -jar <selenium server standalone jar
name> -role hub -port 4441
Browser: To pass the browser which has to execute our selenium
scripts
URL: To pass the application URL
31. What are the Open-source Frameworks supported by Selenium
WebDriver?
·
JUnit
·
TestNG
Read: TestNG Complete
Tutorial
32. What are the Locators available in Selenium?
In Selenium WebDriver, there are 8 different
types of locators:
1.
ID – Practical example
2.
ClassName – Practical example
3.
Name – Practical example
4.
TagName – Practical example
5.
LinkText – Practical example
6.
PartialLinkText – Practical example
7.
XPath – Practical example
8.
CSS Selector – Practical example
Click here to see the detailed post on Locators.
33. What is an XPath?
XPath is used to locate the elements. Using
XPath, we could navigate through elements and attributes in an XML document to
locate web elements such as textbox, button, checkbox, Image etc., in a web
page.
Learn How To Write
Dynamic XPath
34. When you use these locators ID, Name, XPath, Or CSS
Selector?
ID & Name locators will be used when there
are unique identifiers & unique names available on the web page.
CSS Selector can be used for performance and when ID & Name
locators are not unique.
XPath is used when there is no preferred locators.
35. What is the difference between “/” and “//”
Single Slash “/” – Single slash is used to create XPath with
absolute path i.e. the XPath would be created to start selection from the
document node/start node.
Double Slash “//” – Double slash is used to create XPath with
relative path i.e. the XPath would be created to start selection from anywhere
within the document.
36. What is the difference between Absolute Path and Relative
Path?
Absolute XPath starts from the root node and
ends with desired descendant element’s node. It starts with top HTML node
and ends with input node. It starts with a
single forward slash(/) as shown below.
1 |
/html/body/div[3]/div[1]/form/table/tbody/tr[1]/td/input |
Relative XPath starts from any node in between
the HTML page to the current element’s node(last node of the element). It
starts with a double forward slash(//) as shown below.
1 |
//input[@id='email'] |
37. What is the difference between Assert and Verify in
Selenium?
Assert: In simple words, if the assert condition is true
then the program control will execute the next test step but if the condition
is false, the execution will stop and further test step will not be executed.
Verify: In simple words, there won’t be any halt in the test
execution even though the verify condition is true or false.
Read this detailed post on Assert vs Verify
with practical example here detailed post check the below link.
38. What are Soft Assert and Hard Assert in Selenium?
Soft Assert: Soft Assert collects errors
during @Test Soft Assert does
not throw an exception when an assert fails and would continue with the next
step after the assert statement.
Hard Assert: Hard Assert throws an AssertException immediately when
an assert statement fails and test suite continues with next @Test
Detailed Post: Soft Assert
39. What is the difference between setSpeed () and sleep ()
methods?
Both sleep() and setSpeed() are used to delay
the execution speed.
setSpeed(): It set up speed that will apply a delay time before every
Selenium operation.
Example: setSpeed(“5000”) – It waits for 5 seconds
sleep(): It set up wait only for once when called in our Selenium
script.
Example: sleep(5000) – It waits for 5 seconds
40. What are the verification points available in Selenium?
In Selenium IDE, we use Selenese Verify and
Assert Commands as Verification points
In Selenium WebDriver, there is no built-in features for verification points.
It totally depends on our coding style. some of the Verification points are
·
To check for page title
·
To check for certain
text
·
To check for certain
element (text box, button, drop down, etc.)
41. How to launch a browser using Selenium WebDriver?
WebDriver is an Interface. We create an Object
of a required driver class such as FirefoxDriver, ChromeDriver,
InternetExplorerDriver etc.,
To launch Firefox Driver:
WebDriver driver = new
FirefoxDriver();
Note: If you use geckodriver with
Selenium, you must upgrade to Selenium 3.3. Here we have to set the property as
follows
1 |
System.setProperty("webdriver.gecko.driver",
"D:\\Selenium Environment\\Drivers\\geckodriver.exe"); |
To launch Chrome Driver:
WebDriver driver = new
ChromeDriver();
To launch Internet Explorer Driver:
WebDriver driver = new
InternetExplorerDriver();
To launch Safari Driver:
WebDriver driver = new SafariDriver();
42. Is the FirefoxDriver a Class or an Interface?
FirefoxDriver is a Java class, and it implements the WebDriver interface.
43. What is the super interface of WebDriver?
SearchContext acts as the super interface of Web
Driver.
44. Explain the line of code Webdriver driver = new
FirefoxDriver(); ?
1 |
Webdriver
driver = new FirefoxDriver(); |
‘WebDriver‘ is an interface and we are
creating an object of type WebDriver instantiating an object of FirefoxDriver
class.
Read more on why WebDriver driver =
new FirefoxDriver();
45. We do create a reference variable ‘driver’ of type WebDriver
as shown below. What is the purpose of doing this way?
1 2 3 4 5 |
WebDriver
driver = new FirefoxDriver(); instead
of creating FirefoxDriver
driver = new FirefoxDriver(); |
If we create a reference variable driver of type
WebDriver then we could use the same driver variable to work with any browser
of our choice such as IEDriver, SafariDriver etc.,
46. What is WebElement selenium?
WebElement in Selenium represents an HTML
element. It basically represents a DOM element in a HTML document.
47. What are the different exceptions you have faced in Selenium
WebDriver?
Some of the exceptions I have faced in my
current project are
1.
ElementNotVisibleException
2.
StaleElementReferenceException
Element Not visible Exception:
This exception will be thrown when you are
trying to locate a particular element on webpage that is not currently visible
eventhough it is present in the DOM. Also sometimes, if you are trying to
locate an element with the xpath which associates with two or more element.
Stale Element Reference Exception:
A stale element
reference exception is thrown in one of two cases, the first
being more common than the second.
The two reasons for Stale element reference are
1.
The element has been
deleted entirely.
2.
The element is no longer
attached to the DOM.
We face this stale element reference
exception when the element we are interacting is destroyed and then
recreated again. When this happens the reference of the element in the DOM
becomes stale. Hence we are not able to get the reference to the element.
Some other exceptions we usually face are as
follows:
·
WebDriverException
·
IllegalStateException
·
TimeoutException
·
NoAlertPresentException
·
NoSuchWindowException
·
NoSuchElementException
48. How to handle STALEELEMENTREFERENCEEXCEPTION?
Before looking how to handle Stale Element
Reference Exception through Page Object Model. Let’s see what is Stale Element
Reference Exception first.
Stale means old, decayed, no longer fresh. Stale
Element means an old element or no longer available element. Assume there is an
element that is found on a web page referenced as a WebElement in WebDriver. If
the DOM changes then the WebElement goes stale. If we try to interact with an
element which is staled then the StaleElementReferenceException is thrown.
Here we have given solutions to handle
StaleElementReferenceException in detail.
49. What are the types of waits available in Selenium WebDriver?
In Selenium we could see three types of waits
such as Implicit Waits, Explicit Waits and Fluent Waits.
·
Implicit
Waits – Click to view
detailed post
·
Explicit Waits – Click to view
detailed post
·
Fluent
Waits – Click to view
detailed post
50. What is Implicit Wait In Selenium WebDriver?
Implicit waits tell to the WebDriver to wait for
a certain amount of time before it throws an exception. Once we set the time,
WebDriver will wait for the element based on the time we set before it
throws an exception. The default setting is 0 (zero). We need to set some wait
time to make WebDriver to wait for the required time.
51. What is WebDriver Wait In Selenium WebDriver?
WebDriverWait is applied on a
certain element with defined expected condition and time.
This wait is only applied to the specified element. This wait can also throw an
exception when an element is not found.
52. What is Fluent Wait In Selenium WebDriver?
FluentWait can define the maximum amount of time
to wait for a specific condition and frequency with which to check the
condition before throwing an “ElementNotVisibleException” exception.
53. What happen if you mix both implicit wait and explicit wait
in a Selenium Script?
As per the official Selenium documentation, it
is suggested not to mix both Implicit waits and Explicit Waits. Mixing both of
them can cause unpredictable wait times.
Implicit wait is defined only once in the code.
It will remain same throughout the driver object instance.
Explicit wait is defined whenever it is
necessary in the code. This wait will call at the time of execution. It is a
conditional wait.
Explicit wait will overwrite the implicit wait
where ever explicit wait is applied. So, Explicit Wait gets first preference
then Implicit Wait.
54. What happen if you mix both Thread.Sleep and WebDriver Waits
in a Selenium Script?
Thread.sleep() method can be used to pause the
execution for specified time in milliseconds
If we use WebDriver waits along with
Thread.sleep() method then webdriver will hold the execution for specified time
and then will follow other wait. Test execution time will become more, if we
mix both waits.
55. How to Login into any site if it is showing an
Authentication Pop-Up for Username and Password?
To do this we pass username and password with
the URL
1 2 |
http://username:password@url e.g. http://myUserName:myPassword@softwaretestingmaterial.com |
56. How to input text in the text box using Selenium WebDriver?
By using sendKeys() method
1 2 3 |
WebDriver
driver = new FirefoxDriver(); driver.get("https://www.gmail.com"); driver.findElement(By.xpath("xpath")).sendKeys("Software
Testing Material Website"); |
57. How to input text in the text box without calling the
sendKeys()?
1 2 3 4 5 6 |
// To
initialize js object JavascriptExecutor
JS = (JavascriptExecutor)webdriver; // To
enter username JS.executeScript("document.getElementById('User').value='SoftwareTestingMaterial.com'"); // To
enter password JS.executeScript("document.getElementById('Pass').value='tester'"); |
Learn
JavaScriptExecutor in Selenium with Examples
58. How to clear the text in the text box using Selenium
WebDriver?
By using clear() method
1 2 3 4 |
WebDriver
driver = new FirefoxDriver(); driver.get("https://www.gmail.com"); driver.findElement(By.xpath("xpath_of_element1")).sendKeys("Software
Testing Material Website"); driver.findElement(By.xpath("xpath_of_element1")).clear(); |
59. How to get a text of a web element?
By using getText() method
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package
softwareTestingMaterial; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; public class
TestTestTest { @Test public void testmethod(){ System.setProperty("webdriver.chrome.driver",
"D:\\Selenium Environment\\Drivers\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://www.google.com"); String availableText = driver.findElement(By.xpath("//*[@id='gbw']/div/div/div[1]/div[1]/a")).getText(); System.out.println("Text
Available is :"+availableText); } } |
60. How to get an attribute value using Selenium WebDriver?
By using getAttribute(value);
It returns the value of the attribute
passed as a parameter.
HTML:
1 |
<input
name="nameSelenium" value="valueSelenium">SoftwareTestingMaterial</input> |
Selenium Code:
1 2 3 |
String attributeValue
= driver.findElement(By.name("nameSelenium")).getAttribute("value"); System.out.println("Available
attribute value is :"+attributeValue); Output:
valueSelenium |
61. How to click on a hyperlink using Selenium WebDriver?
We use click() method in Selenium to click on
the hyperlink
1 |
driver.findElement(By.linkText(“Software
Testing Material Website”)).click(); |
62. How to submit a form using Selenium WebDriver?
We use “submit” method on element to submit a
form
1 |
driver.findElement(By.id("form_1")).submit(); |
Alternatively, you can use click method on the
element which does form submission
63. How to press ENTER key on text box In Selenium WebDriver?
To press ENTER key using Selenium
WebDriver, We need to use Selenium Enum Keys with its
constant ENTER.
1 |
driver.findElement(By.xpath("xpath")).sendKeys(Keys.ENTER); |
64. How to pause a test execution for 5 seconds at a specific
point?
By using java.lang.Thread.sleep(long
milliseconds) method we could pause the execution for a specific time.
To pause 5 seconds, we need to pass parameter as 5000 (5 seconds)
1 |
Thread.sleep(5000) |
65. Is Selenium Server needed to run Selenium WebDriver Scripts?
When we are distributing our Selenium WebDriver
scripts to execute using Selenium Grid, we need to use Selenium Server.
66. What happens if I run this command. driver.get(“www.softwaretestingmaterial.com”)
;
If the URL doesn’t contain http or https prefix
then an exception is thrown. So, we need to pass HTTP protocol within
driver.get() method.
1 |
driver.get("https://www.softwaretestingmaterial.com"); |
67. What is the alternative to driver.get() method
to open an URL using Selenium WebDriver?
Alternative method to driver.get(“url”) method
is driver.navigate.to(“url”)
68. What is the difference between driver.get() and driver.navigate.to(“url”)?
driver.get(): To open an URL and it will wait till the whole
page gets loaded
driver.navigate.to(): To navigate to an URL and It will not
wait till the whole page gets loaded
69. Can I navigate back and forth in a browser in Selenium
WebDriver?
We use Navigate interface to do navigate
back and forth in a browser. It has methods to move back, forward as well as to
refresh a page.
driver.navigate().forward(); – to navigate to the next web page
with reference to the browser’s history
driver.navigate().back(); – takes back to the previous webpage
with reference to the browser’s history
driver.navigate().refresh(); – to refresh the current web page
thereby reloading all the web elements
driver.navigate().to(“url”); – to launch a new web browser
window and navigate to the specified URL
70. What are the different types of navigation commands?
Refer above question (Can I navigate back and
forth in a browser)
71. How to fetch the current page URL in Selenium?
To fetch the current page URL, we use getCurrentURL()
1 |
driver.getCurrentUrl(); |
72. How can we maximize browser window in Selenium?
To maximize browser window in selenium we
use maximize() method. This method maximizes the current
window if it is not already maximized
1 |
driver.manage().window().maximize(); |
73. How to delete cookies in Selenium?
To delete cookies we use deleteAllCookies() method
1 |
driver.manage().deleteAllCookies(); |
74. What are the ways to refresh a browser using Selenium
WebDriver?
There are multiple ways to refresh a page
in selenium
·
Using driver.navigate().refresh() command
as mentioned in the question 45
·
Using driver.get(“URL”)
on the current URL or using driver.getCurrentUrl()
·
Using
driver.navigate().to(“URL”) on the current URL or driver.navigate().to(driver.getCurrentUrl());
·
Using sendKeys(Keys.F5) on
any textbox on the webpage
75. What is the difference between driver.getWindowHandle() and
driver.getWindowHandles() in Selenium WebDriver?
driver.getWindowHandle() – It returns a handle of the current page
(a unique identifier)
driver.getWindowHandles() – It returns a set of handles of the all
the pages available.
76. What is the difference between driver.close() and
driver.quit() methods?
Purpose of these two methods (driver.close and
driver.quit) is almost same. Both allow us to close a browser but still, there
is a difference.
driver.close(): To close current WebDriver instance
driver.quit(): To close all the opened WebDriver instances
77. What is the difference between driver.findElement() and
driver.findElements() commands?
The difference between driver.findElement() and
driver.findElements() commands is-
·
findElement() returns a
single WebElement (found first) based on the locator passed as parameter.
Whereas findElements() returns a list of WebElements, all satisfying the
locator value passed.
·
Syntax of findElement()-
WebElement textbox = driver.findElement(By.id(“textBoxLocator”));
Syntax of findElements()-
List <WebElement> elements = element.findElements(By.id(“value”));
·
Another difference
between the two is- if no element is found then findElement() throws
NoSuchElementException whereas findElements() returns a list of 0 elements.
78. What Is The Difference Between MaxSessions Vs. MaxInstances
Properties in Selenium Grid?
MaxInstances is the no. of browser instances of the same version of the
browser that can run on the remote machine.
Let’s see an example below:
1 2 |
-browser
browserName=InternetExplorer,version=6,maxInstances=2,platform=WINDOWS -browser
browserName=firefox,version=11,maxInstances=2,platform=WINDOWS |
As per the above example, it will allow us to
run 4 instances of both IE and Firefox at the same time (in parallel) in a
remote machine.
MaxSession says how many browsers, independent of the type &
version, can run in parallel on the remote machine.
It supersedes the “MaxInstances” setting.
If maxSession=1 then no more than a single
browser would run. If maxSession=2 then any of the below combinations can run
at a time irrespective of what MaxInstances we have defined.
2 Internet Explorer
2 Firefox
1 Internet Explorer + 1 Firefox
79. How to find whether an element is displayed on the web
page?
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()
1 |
boolean elePresent =
driver.findElement(By.xpath("xpath")).isDisplayed(); |
2.
isSelected()
1 |
boolean eleSelected=
driver.findElement(By.xpath("xpath")).isSelected(); |
3.
isEnabled()
1 |
boolean eleEnabled=
driver.findElement(By.xpath("xpath")).isEnabled(); |
80. How to select a value in a dropdown?
By using Select class
1 2 3 4 5 |
WebElement
mySelectElement = driver.findElement(By.name("dropdown")); Select dropdown
= new Select(mySelectElement); dropdown.selectByVisibleText(Text); dropdown.selectByIndex(Index); dropdown.selectByValue(Value); |
81. How to capture Screenshot in Selenium WebDriver?
Test cases may fail while executing the test
scripts. While we are executing the test cases manually we just take a
screenshot and place in a result repository. The same can be done by using
Selenium WebDriver.
Some of the scenarios we may need to capture a
screenshot using Selenium WebDriver are
i. Application issues
ii. Assertion Failure
iii. Difficulty to find Webelements on the web page
iv. Timeout to find Webelements on the web page
Selenium provides an interface called TakesScreenshot which
has a method getScreenShotAs which can be used to take a
screenshot of the application under test.
In Selenium 3, we may face few issues while
capturing Screenshots. To overcome we use aShot utility. Click on below links
to see posts related to the normal way of capturing a screenshot and capturing
a screenshot using aShot utility.
Capture screenshot
using Selenium WebDriver
Full Page
Screenshot using aShot utility
82. How to mouse hover on a web element using WebDriver?
By using Actions class
1 2 3 4 5 |
WebElement
ele = driver.findElement(By.xpath("xpath")); //Create
object 'action' of an Actions class Actions
action = new Actions(driver); //Mouseover
on an element action.moveToElement(ele).perform(); |
83. How can we handle Web-based Pop-ups or Alerts in Selenium?
To handle Web-based alerts or popups, we need to
do switch to the alert window and call Selenium WebDriver Alert API methods.
dismiss(): To click on Cancel button.
accept(): To Click on OK button.
getText(): To get the text which is present on the Alert.
sendKeys(): To enter the text into the alert box.
84. How can we handle windows based pop up?
Selenium doesn’t support windows based
applications. It is an automation testing tool which supports only web
application testing. We could handle windows based popups in
Selenium using some third party tools such as AutoIT, Robot
class etc.
85. How to handle hidden elements in Selenium WebDriver?
We can handle hidden elements by using
javaScript executor
1 |
(JavascriptExecutor(driver)).executeScript("document.getElementsByClassName(ElementLocator).click();"); |
86. How can you find Broken Links in a page using Selenium
WebDriver?
87. How to find more than one web element in the list?
1 2 3 4 5 6 7 8 9 10 11 12 |
// To
store the list List
<WebElement> eleList = driver.findElements(By.xpath("xpath")); // To
fetch the size of the list int listSize
= eleList.size(); //for
loop for (int
i=0; i<listSize; i++) { // Clicking on each link links.get(i).click(); // Navigating back to the
previous page that stores the links driver.navigate().back(); } |
88. How to read a JavaScript variable in Selenium WebDriver?
By using JavascriptExecutor
1 2 3 4 5 |
// To
initialize the JS object. JavascriptExecutor
JS = (JavascriptExecutor) webdriver; // To
get the site title. String title
= (String)JS.executeScript("return document.title"); System.out.println("Title
of the webpage : " + title); |
89. What is JavaScriptExecutor and in which cases
JavaScriptExecutor will help in Selenium automation?
In general, we click on an element using click()
method in Selenium.
For example:
1 |
driver.findElement(By.id("Id
Value")).click(); |
Sometimes web controls don’t react well against
selenium commands and we may face issues with the above statement
(click()). To overcome such kind of situation, we use JavaScriptExecutor interface.
It provides a mechanism to execute Javascript
through Selenium driver. It provides “executescript” & “executeAsyncScript”
methods, to run JavaScript in the context of the currently selected frame or
window.
There is no need to write a separate script to
execute JavaScript within the browser using Selenium WebDriver script.
Just we use predefined interface named ‘Java Script Executor’. We need to
import the JavascriptExecutor package in the script.
Package:
1 |
import org.openqa.selenium.JavascriptExecutor; |
Syntax:
1 2 |
JavascriptExecutor
js = (JavascriptExecutor) driver; js.executeScript(Script,Arguments); |
Script – The JavaScript to execute
Arguments – The arguments to the script(Optional). May be
empty.
Returns – One of Boolean, Long, String, List, WebElement, or
null.
Let’s see some scenarios we could handle using
this Interface:
1. To type Text in Selenium WebDriver without
using sendKeys() method
2. To click a Button in Selenium WebDriver using JavaScript
3. To handle Checkbox
4. To generate Alert Pop window in selenium
5. To refresh browser window using Javascript
6. To get innertext of the entire webpage in Selenium
7. To get the Title of our webpage
8. To get the domain
9. To get the URL of a webpage
10. To perform Scroll on an application using Selenium
11. To click on a SubMenu which is only visible on mouse hover on Menu
12. To navigate to different page using Javascript
90. How do you read test data from excels?
Test data can efficiently be read from excel
using JXL or POI API. POI API has many advantages than JXL.
Click here to see a practical example of using Apache POI.
91. Is it possible to automate the captcha using Selenium?
No, It’s not possible to automate captcha and
bar code reader.
92. Can You Use Selenium For Rest API Testing Or Web Services
Testing?
Simple answer for this is Selenium is not a tool
for API Testing. It automates web browsers. Rest API & Web Services
contains no UI. So we cannot automate using Selenium.
Don’t miss: API Testing Interview
Questions
93. How to handle Ajax calls in Selenium WebDriver?
Handling AJAX calls is one of the common issues
when using Selenium WebDriver. We wouldn’t know when the AJAX call would get
completed and the page has been updated. In this post, we see how to handle
AJAX calls using Selenium.
AJAX stands for Asynchronous JavaScript and XML.
AJAX allows the web page to retrieve small amounts of data from the server
without reloading the entire page. AJAX sends HTTP requests from the client to
server and then process the server’s response without reloading the entire
page. To handle AJAX controls, wait commands may not work. It’s just because
the actual page is not going to refresh.
When you click on a submit button, the required
information may appear on the web page without refreshing the browser.
Sometimes it may load in a second and sometimes it may take longer. We have no
control over loading time. The best approach to handle this kind of situations
in selenium is to use dynamic waits (i.e. WebDriverWait in combination with
ExpectedCondition)
Some of the methods which are available are as
follows:
1. titleIs() – The expected condition waits for
a page with a specific title.
1 |
wait.until(ExpectedConditions.titleIs(“Deal
of the Day”)); |
2. elementToBeClickable() – The expected
condition waits for an element to be clickable i.e. it should be
present/displayed/visible on the screen as well as enabled.
1 |
wait.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath"))); |
3. alertIsPresent() – The expected
condition waits for an alert box to appear.
1 |
wait.until(ExpectedConditions.alertIsPresent())
!=null); |
4. textToBePresentInElement() – The expected
condition waits for an element having a certain string pattern.
1 |
wait.until(ExpectedConditions.textToBePresentInElement(By.id(“title’”),
“text to be found”)); |
94. List some scenarios which we cannot automate using Selenium
WebDriver?
1. Bitmap comparison is not possible using
Selenium WebDriver
2. Automating Captcha is not possible using Selenium WebDriver
3. We can not read bar code using Selenium WebDriver
95. What is Object Repository in Selenium WebDriver?
Object Repository is used to store element
locator values in a centralized location instead of hard coding them within the
scripts. We do create a property file (.properties) to store all the
element locators and these property files act as an object repository in
Selenium WebDriver.
96. How you build Object Repository in your project?
In QTP, there is an Object Repository concept.
When a user records a test, the objects and its properties are captured by
default in an Object Repository. QTP uses this Object Repository to play back
the scripts. Coming to Selenium, there is no default Object Repository concept.
It doesn’t mean that there is no Object Repository in Selenium. Even though
there is no default one still we could create our own. In Selenium, we call
objects as locators (such as ID, Name, Class Name, Tag Name, Link Text, Partial
Link Text, XPath, and CSS). Object repository is a collection of objects. One
of the ways to create Object Repository is to place all the locators in a
separate file (i.e., properties file). But the best way is to use Page Object
Model. In the Page Object Model Design Pattern, each web page is represented as
a class. All the objects related to a particular page of a web application are
stored in a class.
97. What is Page Object Model in Selenium?
Page Object Model is
a Design Pattern which has become popular in Selenium Test Automation. It is
widely used design pattern in Selenium for enhancing test maintenance and
reducing code duplication. Page object model (POM) can be used in any kind of framework such
as modular, data-driven,
keyword driven, hybrid framework etc. A page object is an object-oriented
class that serves as an interface to a page of your Application Under
Test(AUT). The tests then use the methods of this page object class whenever
they need to interact with the User Interface (UI) of that page. The benefit is
that if the UI changes for the page, the tests themselves don’t need to change,
only the code within the page object needs to change. Subsequently, all changes
to support that new UI is located in one place.
98. What is Page Factory?
We have seen that ‘Page Object Model’ is a way
of representing an application in a test framework. For every ‘page’ in the
application, we create a Page Object to reference the ‘page’ whereas a ‘Page
Factory’ is one way of implementing the ‘Page Object Model’.
99. What is the difference between Page Object Model (POM) and
Page Factory?
Page Object is a class that represents a web
page and hold the functionality and members.
Page Factory is a way to initialize the web elements you want to interact with
within the page object when you create an instance of it.
100. What are the advantages of Page Object Model Framework?
Code reusability – We could achieve code reusability by
writing the code once and use it in different tests.
Code maintainability – There is a clean separation between
test code and page specific code such as locators and layout which becomes very
easy to maintain code. Code changes only on Page Object Classes when a UI
change occurs. It enhances test maintenance and reduces code duplication.
Object Repository – Each page will be defined as a java
class. All the fields in the page will be defined in an interface as members.
The class will then implement the interface.
Readability – Improves readability due to clean separation between
test code and page specific code
101. How can you use the Recovery Scenario in Selenium WebDriver?
By using “Try Catch Block” within
Selenium WebDriver Java tests.
1 2 3 4 5 |
try {
driver.get("www.softwaretestingmaterial.com"); }catch(Exception
e){
System.out.println(e.getMessage()); } |
102. How to Upload a file in Selenium WebDriver?
There are two cases which are majorly used to
upload a file in Selenium WebDriver such as using SendKeys Method
and using AutoIT Script.
103. How to Download a file in Selenium WebDriver?
By using AutoIT script, we
could download a file in Selenium WebDriver.
104. How to run Selenium WebDriver Test from the command line?
Run Java Program
using Command Prompt
Run TestNG using
Command Prompt
105. How to switch between frames in Selenium?
By using the following code, we could switch
between frames.
1 |
driver.switchTo().frame(); |
106. How to connect a Database in selenium?
As we all know Selenium WebDriver is a tool to
automate User Interface. We could only interact with Browser using Selenium
WebDriver.
We use JDBC Driver to connect
the Database in Selenium (While using Java Programming Language).
107. How To Resize Browser Window Using Selenium WebDriver?
To resize the browser window to particular
dimensions, we use ‘Dimension’ class to resize the browser window.
108. How To Scroll Web Page Down Or UP Using Selenium WebDriver?
JavaScript scrollBy() method scrolls
the document by the specified number of pixels.
109. How To Perform Right Click Action (Context Click) In
Selenium WebDriver?
We use Actions class in Selenium WebDriver to do
Right-Click (Context Click) action.
110. How To Perform Double Click Action In Selenium WebDriver?
We use Actions class to do Double click
action in selenium.
111. How To Perform Drag And Drop Action in Selenium WebDriver?
In some applications, we may face a situation to
automate drag and drop an item from one location to another location. We
could not achieve these using basic elements. Selenium has provided an
“Actions” class to handle this kind of scenarios. We overcome this kind of
scenarios such as drag and drop using Actions Class.
To achieve this, we use Actions class in
Selenium WebDriver.
112. How To Highlight Element Using Selenium WebDriver?
By using JavascriptExecutor interface, we could
highlight the specified element
113. Have you used any crossbrowsertesting tool to run selenium
scripts on cloud?
I have used BrowserStack to run selenium tests
on multiple browsers & Multiple operating systems in parallel. Earlier we
have made a video on how to use BrowserStack to run selenium scripts on the
cloud. Find the link in the description below.
114. What is desired capabilities?
In Selenium we use desired capabilities to
handle SSL certificates in chrome browser
We need to create an instance of
DesiredCapabilities
1 |
DesiredCapabilities
desiredCapability = DesiredCapabilities.chrome(); |
115. What is Continuous Integration?
Continuous Integration is abbreviated as CI.
Continuous Integration is a development practice that aims to make sure the
correctness of software. After each commit, a suite of tests run automatically
and test the software to ensure whether the software is running without any
breaks. If any test fails, we will get immediate feedback say “build is
broken”.
In simple words, continuous integration is a
process of verifying the correctness of a software.
Some of the continuous integration tools are
Jenkins, TeamCity, Bamboo, Travis, Circle Ci, Bitbucket.
We can schedule the test suite execution using
these CI Tools.
Learn how Continuous
Integration with Jenkins in Selenium works
116. Name some CI tools available in the Market?
Some of the best continuous testing softwares to
use in your project.
·
Selenium
·
Katalon Studio
·
Appium
·
Unified Functional
Testing
·
Travis CI
·
Egg Plant
·
Watir
·
Tricentis Tosca
·
Test Sigma
·
IBM Rational Functional
Tester
·
Test Complete
·
QuerySurge
·
JMeter
·
Jenkins
·
Bamboo
·
Docker
·
PagerDuty
·
JIRA
·
GitHub
Read the detailed explanation on Continuous Testing
Tools
117. How to achieve Database testing in Selenium?
As we all know Selenium WebDriver is a tool to
automate User Interface. We could only interact with Browser using Selenium
WebDriver.
Sometimes, we may face a situation to get the
data from the Database or to modify (update/delete) the data from the
Database. If we plan to automate anything outside the vicinity of a
browser, then we need to use other tools to achieve our task. To achieve
the Database connection and work on it, we need to use JDBC API Driver.
The Java Database Connectivity (JDBC) API
provides universal data access from the Java programming language. Using the
JDBC API, you can access virtually any data source, from relational databases
to spreadsheets and flat files. It lets the user connect and interact with the
Database and fetch the data based on the queries we use in the automation
script. JDBC is a SQL level API that allows us to execute SQL statements. It
creates a connectivity between Java Programming Language and the database.
Using JDBC Driver we could do the following
i. Establish a Database connection
ii. Send SQL Queries to the Database
iii. Process the results
118. How to delete Browser Cookies with Selenium Web Driver?
1 |
driver.Manage().Cookies.DeleteAllCookies(); |
TestNG Interview Questions:
Here we have dealt with some important TestNG
interview questions. If you want to learn more interview questions related to
TestNG then here you go. We have a special post on TestNG Interview
Questions. Also, you could find TestNG Complete
Tutorial here
119. What is TestNG?
TestNG is a testing framework designed to
simplify a broad range of testing needs, from unit testing to integration
testing.
120. What are the types of annotations available in TestNG?
@BeforeTest
@AfterTest
@BeforeClass
@AfterClass
@BeforeMethod
@AfterMethod
@BeforeSuite
@AfterSuite
@BeforeGroups
@AfterGroups
@Test
121. What is TestNG Assert and list out some common Assertions
supported by TestNG?
TestNG Asserts help us to verify the condition
of the test in the middle of the test run. Based on the TestNG Assertions, we
will consider a successful test only if it is completed the test run without
throwing any exception.
Some of the common assertions supported by
TestNG are
·
assertEqual(String
actual,String expected)
·
assertEqual(String
actual,String expected, String message)
·
assertEquals(boolean
actual,boolean expected)
·
assertTrue(condition)
·
assertTrue(condition,
message)
·
assertFalse(condition)
·
assertFalse(condition,
message)
122. How to create and run TestNG.xml?
In TestNG framework, we need to create TestNG
XML file to create and handle multiple test classes. We do configure
our test run, set test dependency, include or exclude any test, method, class
or package and set priority etc in the XML file.
123. How to set test case priority in TestNG?
We use priority attribute to
the @Test annotations. In case priority is not set then
the test scripts execute in alphabetical order.
1 2 3 4 5 6 7 8 9 10 11 12 |
package
TestNG; import org.testng.annotations.*; public class
PriorityTestCase{ @Test(priority=0) public void testCase1() { system.out.println("Test
Case 1"); } @Test(priority=1) public void testCase2() { system.out.println("Test
Case 2"); } } |
Output:
1 2 |
Test Case
1 Test Case
2 |
124. What is Parameterized testing in TestNG?
Parameterized tests allow developers to run the same test over
and over again using different values.
There are two ways to set these parameters:
·
with testng.xml - Practical Example
·
with
Data Providers – Practical Example
125. How to run a group of test cases using TestNG?
TestNG allows you to perform sophisticated groupings
of test methods. Not only can you declare that methods belong to groups, but
you can also specify groups that contain other groups. Then TestNG can be
invoked and asked to include a certain set of groups (or regular expressions)
while excluding another set. This gives you maximum flexibility in how
you partition your tests and doesn’t require you to recompile anything if you
want to run two different sets of tests back to back.
Groups are specified in your testng.xml file and can be found either under
the <test> or <suite> tag. Groups specified in the <suite> tag apply to all the <test> tags underneath.
1 2 3 4 |
@Test (groups
= { "smokeTest", "functionalTest" }) public void
loginTest(){ System.out.println("Logged
in successfully"); } |
126. What is the use of @Listener annotation in TestNG?
Ans. TestNG listeners are used to configure
reports and logging. One of the most widely used listeners in TestNG is ITestListener interface.
It has methods like onTestStart, onTestSuccess, onTestFailure, onTestSkipped etc.
We should implement this interface creating a listener class of our own.
Next, we should add the listeners annotation (@Listeners) in the Class
which was created.
127. How can we create a data-driven framework using TestNG?
By using @DataProvider annotation,
we can create a Data-Driven
Testing Framework.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
@DataProvider(name="getData") public Object[][] getData(){ //Object
[][] data = new Object [rowCount][colCount]; Object [][] data
= new Object [2][2]; data [0][0] =
"FirstUid"; data [0][1] =
"FirstPWD"; data[1][0] =
"SecondUid"; data[1][1] =
"SecondPWD"; return data; } |
128. Where you have applied OOPS in Automation Framework?
Here we have given a clear explanation on the
application of OOPs in Automation
Framework
129. How to handle browser (chrome) notifications in Selenium?
In Chrome, we can use ChromeOptions as shown
below.
1 2 3 |
ChromeOptions
options = new ChromeOptions(); options.addArguments("disable-infobars"); WebDriver
player = new ChromeDriver(options); |
I would like to conclude this post here. Final
words, Bookmark this post “Selenium Testing Interview Questions” for future
reference. We keep on updating this post based on user requests.
130. Mention types of data you have handled in Selenium?
·
Excel
·
CSV
·
XML
·
JSON
·
YAML
·
SQL