The ability to use the Selenium testing suite has become crucial in the coding world, and you’ll find that if you are going for a job in testing, it is wise to research the common and most difficult Selenium interview questions.
Because Selenium is open source, its use is widespread. While its accessibility is something of a double-edged support (it lacks the centralised support and backup available with commercial packages), it also ensures a vibrant exchange of ideas among Selenium users online.
That means that there is a huge resource of information about the most common Selenium interview questions online that will leave you in good shape for anything that might be thrown at you in the Selenium interview questions asked by your inquisitors.
There are also a host of great books available to help guide you through those trick Selenium interview questions and the entire process. These include Jagadesh Babu Munta’s great Software Quality and Java Automation Engineer Survival Guide, which has more than 500 interview questions and answers Automated Software Testing Interview Questions You’ll Most Likely Be Asked (Job Interview Questions) by Vibrant Publishers; and Raghav Arora’s ]Selenium Interview Questions: Guide to Crack Selenium Automation Interviews.
10 Common and Difficult Selenium Interview Questions
To whet your appetite and help you prepare for the Selenium Interview Questions you will likely face, here are 10 of the core, most common, and difficult Selenium interview questions posted online by experts, with answers, to help you prepare. Good luck, Selenium AGENTs!
1. What is Selenium? What are the different Selenium components?
According to the website SoftwareTestingHelp.com, the answer is that Selenium is one of the most popular automated testing suites. The website shows how Selenium is designed to support and encourage automation testing of functional aspects of web-based applications, as well as a wide range of browsers and platforms. Due to its open source nature, Selenium has become one of the most accepted tools amongst the testing professionals.
Your answer should also point out that rather than being a single entity, Selenium is more of an overall package of several testing tools, and so is referred to as a suite. SoftwareTestingHelp.com identifies the following sets of tools:
Selenium Integrated Development Environment (IDE): a record and playback tool, distributed as a Firefox Plugin.
Selenium Remote Control (RC): a server that allows creation of test scripts in a programming language, and execution of test scripts across a broad spectrum of browsers.
Selenium WebDriver: a tool with a number of advantages over Selenium RC, including direct communication with the web browser, and the ability to use native compatibility to automate.
Selenium Grid: used to distribute your test execution on multiple platforms and environments concurrently.
2. What functions/methods can you use to wait for a page to load, or some element on the page to show up?
Toptal.com advises that explicit wait can be used to stall, until a specific condition is met. Thread.Sleep() is one form of explicit wait that stalls the thread for a certain duration of time, but may not be the most reliable way to wait for a page to load. If you wish to have the thread ‘sleep’ for 30 seconds (30,000 milliseconds), Toptal advises not using something like:
Thread.Sleep(30000);
but instead, using the following … where the thread sleeps for 30 seconds (30,000 milliseconds), the following can be used:
WebDriverWait wait= new WebDriverWait(webDriver,30); wait.until(ExpectedConditions.visibilityOf(h1));
… where Selenium waits until the given element is visible on the page, or throws TimeoutException after waiting for 30 seconds.
3. Explain the difference between single and double slash in X-path?
According to contributors to the web community on Guru99.com, the Single slash ‘/ ’ starts selection from the document node, and allows the creation of ‘absolute’ path expressions.
On the other hand, the double slash ‘ // ’ can start a selection matching anywhere in the document, and enables the user to ‘relative’ path expressions
4. How do you deal with frame elements in Selenium on a page?
The Toptal website advices that you must first switch to the frame in order to manipulate either the frame or its content. It’s the same principle as switching to a different page before you can interact with it (see below)
driver.switchTo().frame(index);
Here, index is the zero-based index of the frame. Switching the frame directs all further interactions through the driver towards the selected frame. The frame method also works with name, element ID and reference to already located elements.
To switch back to the default frame, the defaultContent method can be used:
driver.switchTo().defaultContent();
5. How would you make sure that a page is loaded using Selenium and Webdriver?
The answer provided by TechBeamers.com to this question is that the following lines of code will check for successful loading. They advise that the best approach is to select an element from the page and standby until it becomes clickable.
selenium.waitForPageToLoad("5000"); // Or while (!(selenium.isElementPresent("any page element ")==true)) { selenium.setSpeed("5"); Thread.sleep(5); }
And here is the Webdriver specific code that will achieve the same objective.
WebDriverWait check = new WebDriverWait(driver, 100); check.until(ExpectedConditions.anyElement(By.id(id)));
6. What is difference between assert and verify commands?
Here is a good, comprehensive answer from SoftwareTestingHelp.com. Proof that ‘difficult’ doesn’t necessarily mean ‘tricky’… just being sure that you know your subject inside and out.
Assert: this command checks whether the given condition is true or false. Let’s say we assert whether the given element is present on the web page or not. If the condition is true then the program control will execute the next test step but if the condition is false, the execution would stop and no further test would be executed.
Verify: this command also checks whether the given condition is true or false. Irrespective of the condition being true or false, the program execution doesn’t halts i.e. any failure during verification would not stop the execution and all the test steps would be executed.
7. What are the different exceptions you face in Selenium Webdriver?
Here is a list of exceptions provided by the Techbeamers.com website
- WebDriverException
- NoAlertPresentException
- NoSuchWindowException
- NoSuchElementException
- TimeoutException
8. What are the technical challenges with Selenium?
According to contributors on Guru99.com, the technical challenges with Selenium include.
- Selenium supports only web based applications
- It does not support the Bitmap comparison
- For any reporting-related capabilities, the user must depend on third-party tools
- There is no vendor support, unlike the backup available for commercial tools such as HP UFT
- Maintainability of objects can be difficult, as Selenium has no object repository concept.
9. What is Page Object Model and Page Factory in Selenium?
Here is a comprehensive response to this question from Toptal.com.
Page Object Model is a design pattern where web pages are represented using classes. Variables in the class can then be used to hold references to elements on the web page, and methods can be used to implement behaviours. This allows an elegant way of implementing test routines that are both readable and easier to maintain and extend in the future.
clickLoginButton(); setCredentials(user_name, user_password); submitLoginForm();
Page Factory is used to initialize every WebElement variable with a reference to a corresponding element on the actual web page using configured “locators”. Annotations, such as @FindBy, can be used to define strategies for looking up elements, along with the necessary information for identifying them:
@FindBy(how=How.NAME, using="username") private WebElement user_name;
10. How do you read a JavaScript variable in Selenium WebDriver?
Ans. It’s easy to access any JavaScript variable from the Selenium Webdriver test scripts. Just you need to use the below Java code snippet.
// Initialize the JS object. JavascriptExecutor JS = (JavascriptExecutor) webdriver; // Get the current site title. String sitetitle = (String)JS.executeScript("return document.title"); System.out.println("My Site Title: " + sitetitle);