Selenium Interview Question Part – 2
This is the second post in the series of selenium interview preparation. In this post also we are focusing on understanding basic selenium concepts. People with experience less than 3 years can expect this type of questions.
Ques 1 : What are two different methods to navigate to a particular url in a browser using Selenium WebDriver?
There are two methods to navigate to a particular url using selenium:
- get(url)
- navigate.to(url)
WebDriver driver = new ChromeDriver(); public void invokeBrowser(){ String url1 = "http://qatechhub.com"; String url2 = "http://www.facebook.com"; driver.get(url1); driver.navigate().to(url2); }
Ques 2: How to send ENTER/TAB key in Selenium WebDriver?
public void searchitem(){ // Define a textbox as a Web Element with any one of the Identifier, not necessarily xPath WebElement textbox = Driver.findElement(By.xpath("//input[@type='text']")); //To Pass tab key textbox.sendKeys(Keys.TAB); //To Pass Enter key textbox.sendKeys(Keys.ENTER); }
Ques 3: List down methods for Alert Handling?
Following are the frequently used methods within an alert.
- Accept an alert.
- Reject an alert.
- Get message from an alert.
public void alertHandling(){ Alert alert = driver.switchTo().alert(); // To get message from an Alert String message = alert.getText(); System.out.println("To get the message from an alert : "+ message); //To accept an Alert alert.accept(); //To reject an Alert alert.dismiss(); }
Ques4: Difference type of wait statement in Selenium WebDriver?
In Selenium WebDriver, to sync up scripts there are three types of wait:
PageLoadTimeout – This is the maximum time selenium waits for a page to get load successfully on a browser. If the page takes more than this time, it will throw Timeout exception.
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
Implicit Wait – this wait can be considered as element detection timeout. Once defined in a script, this wait will be set for all the web elements on a page.
- Selenium keeps polling to check whether that element is available to interact with or not.
- This is the maximum time selenium wait to interact with that web element, before throwing “Element not found exception”.
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
Explicit Wait – This wait can be considered as conditional wait, and is applied to a particular Web Element with a condition. There are many conditions which can be applied using explicit wait.
- Say, for example, there is a web element on a page which takes more than expected time to appear on the page, so instead of increasing Implicit wait for a particular Web Element we can apply explicit wait to that element with a condition.
public void waitTillElementVisible(){ WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//input[@type='text']"))); }
You can learn more about waits from Wait commands in Selenium web driver.
Ques5: Difference between Absolute and Relative xpath?
- Absolute xpath starts from starting of the page. As in an html page, the first tag is HTML.
- “/” is used to access an immediate child of the parent tag.
- Example: html/body/table/tbody/tr[2]/td/input
- Relative xpath starts from anywhere on the page.
- “//” is used to access any child of the parent tag.
- Syntax: //htmlTagname[@attribute=’value’]
- Example: //input[@type=’text’] – It represents xpath of a WebElement which is represented by tagname input and has an attribute type = ‘text’.
To learn more about writing xpaths. Please follow Mastering Xpath article.
Ques6: Write a code to get numbers of frames on a page?
- To get the number of frames, we will call a method called findElements which will return all the frames elements in a list, and then find its size.
public void getNumberOfFrames(){ int numberOfFrames = driver.findElements(By.tagName("iframe")).size(); System.out.println("Number of frames on a page: "+ numberOfFrames); }
Ques7: How to scroll down a page using JavaScript in Selenium?
- Scroll down operation can be performed by invoking JavaScript:
public static void scrollPage(WebDriver oBrowser, int x, int y){ String jsCommand; JavascriptExecutor oJSEngine; oJSEngine = (JavascriptExecutor) driver; jsCommand = String.format("window.scrollTo(%d, %d)", x,y); oJSEngine.executeScript(jsCommand); }
Ques8: How to get the colour of a text or a link text?
There is method element.getCssProperty(<property>) which returns the value of the css property you will pass as an argument. In case you need color property, pass the property as color.
Ques9: How to get the width of a textbox?
Ques10: How to take Screenshot in Selenium WebDriver?
- To take a screenshot in Selenium there is a method called getScreenshotAs() from a class called TakesScreenshot.
public void takeSnapshot(String sImageFilename){ try { TakesScreenshot camera; File tmpFile, imageFile; imageFile = new File(sImageFilename); if( new File(sImageFilename).exists()){ throw new Exception("File already exists.."); } camera= (TakesScreenshot) driver; tmpFile = camera.getScreenshotAs(OutputType.FILE); FileUtils.copyFile(tmpFile, oImageFile); } catch (Exception e) { e.printStackTrace(); } }
Ques11: What is the basic syntax of xpath?
Basic syntax of relative xpath:
//Html Tagname[@attribute=’value’]
Ques12: What are different methods and axes in xpath?
- Methods in xpath – contains(), starts-with() and text().
- Axes in xpath – following, preceding, following-sibling, preceding-sibling, parent, ancestor are some frequently used axes in xpath.
Ques13: How to set the size of Browser window using selenium? or how to test responsiveness of an application?
- To set the size of a window of a Browser, method used is setSize(dim);
Dimension dim = new Dimension(500, 500); driver.manage().window().setSize(dim);
Ques14: How to maximise a window of a Browser using selenium?
//To maximise the browser driver.manage().window().maximize();
Ques15: How to get the color of a text on a page?
Driver.findElement(By.id("gh-ac")).getCssValue("color");
Ques16: Write a code to get the status of all the checkbox on a page?
- isSelected() – method is used to verify whether a checkbox is selected or not.
- It’s a boolean operation returns true if selected else false.
- To verify all the checkbox, first, get all these checkboxes (by using findElements method) in a list and then iterate this list to get the status of each checkbox.
public void getStatus(){ List<WebElement> list = Driver.findElements(By.xpath("//input[@type='checkbox']")); for(WebElement temp : list){ System.out.println(temp.isSelected()); } }
Ques17: Write a code to wait for a particular element to be visible on a page?
- Explicit wait can be used to apply conditional wait (here, condition is visibility of an element on a page)
public void waitTillElementVisible(){ WebDriverWait wait = new WebDriverWait(Driver, 90); wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//input[@type='text']"))); }
Ques18: Write a code to wait for a text to change its colour?
- To apply a conditional wait on change of property(attribute) of a WebElement explicit wait can be used.
- Here, the attribute will be color.
public void waitTillColourChange(){ WebDriverWait wait = new WebDriverWait(Driver, 90); wait.until(ExpectedConditions.attributeContains(By.linkText("advertisement"), "color", "blue")); }
Ques19: Write a code to wait for an alert to appear?
- Waiting for an alert to appear on a page can be performed using explicit wait in Selenium WebDriver.
public void waitForAnAlert(){ WebDriverWait wait = new WebDriverWait(Driver, 90); wait.until(ExpectedConditions.alertIsPresent()); }
Ques20: How to highlight a text or an image in selenium?
- To highlight a text or an image in Selenium, JavaScript can be injected.
public void highLightElement( ){ try { WebElement oElement; JavascriptExecutor oJsEngine; String sJsCommand; String sOldColour, sHighlightColour; // Element to be highlighted oElement = oDriver.findElement(By.xpath("//img[@id="add"]")); // To get the previous color sOldColour = oElement.getCssValue("backgroundColor"); oJsEngine = (JavascriptExecutor) oDriver; //JavaScript command to change the color of an element to "yellow" sJsCommand = String.format("arguments[0].style.backgroundColor=\"%s\";", "yellow"); //Executing JavaScript oJsEngine.executeScript(sJsCommand, oElement); // Wait for 5 seconds Thread.sleep(5000); //JavaScript command to change the color of an element to old color sJsCommand = String.format("arguments[0].style.backgroundColor=\"%s\";", sOldColour); oJsEngine.executeScript(sJsCommand, oElement); } catch (Exception e) { e.printStackTrace(); } }
Soon we will be updating next series of Interview Questions. Till then Happy Learning 🙂