Saturday, October 31, 2015

Selenium IDE Interview Questions - I


  1. What is Selenium IDE?
    Answer : Selenium IDE is a firefox  plug-in which is used to record and playback tests in firefox browser only.
  2. Can we see description of commands used in Selenium IDE?
    Answer : Yes, we can see description of commands in Reference area.

  3. How to handle JavaScript alert in Selenium IDE?
    Answer : By using verify/assertAlert we check the presence of an alert
  4. Can we generate WebDriver code from Selenium IDE?
    Answer : Yes, We can.

Program to remove duplicate numbers

Write a program to remove duplicate numbers from given array.


public class RemoveDuplicateNumbers {

  public static void main(String a[]){
         int[] input1 = {2,3,6,6,8,9,10,10,10,12,12};
         int[] output = removeDuplicates(input1);
         for(int i:output){
             System.out.print(i+" ");
         }
     }

 private static int[] removeDuplicates(int[] input) {
   int j = 0;
         int i = 1;
         //return if the array length is less than 2
         if(input.length < 2){
             return input;
         }
         while(i < input.length){
             if(input[i] == input[j]){
                 i++;
             }else{
                 input[++j] = input[i++];
             }    
         }
         int[] op = new int[j+1];
         for(int k=0; k<op.length; k++){
             op[k] = input[k];
         }
         return op;
 }
}

Write a program to remove duplicate characters from array

public class RemoveDuplicateChars {

 public static void main(String[] args) {
  char c[]={'a','b','g','c','d','e','a','f','c','g'};
  RemoveDuplicateChars obj = new RemoveDuplicateChars();
  obj.method1(c);
 }

 public void method1(char a[]) {
  String s=new String(a);
  String temp="";
  for(int i=0;i<s.length();i++) {
   String s1=s.substring(i, i+1);
   if(temp.contains(s1)) {
    continue;
   } else {
    temp+=s1;
   }
  }
  System.out.println(temp);
 }
}

Checking text on web page using WebDriver

While testing any web application, we need to make sure that it is displaying correct text under given elements. Selenium WebDriver provides a method to achieve this. We can retrieve the text from any WebElement using getText() method.

Example
Lets create a test that check for the proper text in flipkart menu tab.


Code:
@Test
public void testFlipkartMenuText() {
    //Get Text from first item and store it in String variable
    String electronics = driver.findElement(By.cssSelector("li[data-key='electronics']>a>span")).getText();

    //Compare actual & required texts
    assertEquals("Electronics",electronics);  
}


The WebElement class' getText() method returns value of the innerText attribute
of the element.

P.S : Given script may not work on flipkart site. I've written this code just to give some basic idea of using getText() method.

Locating elements using findElements methods





Selenium WebDriver provides the findElements() method, which returns List of WebElements with matching criteria. This method is useful when we want to do some operation with each element with same locator.

Examples

  • Get all links on a page
  • Get all buttons on page
  • Get all options from dropdown
  • Get all rows in table and td s from tr 

Let's create a test to check no of rows in given table.
@Test
public void testFindElements() {
  //Get all the tr from table
  List allTrs = driver.findElements(By.cssSelector("table[id='myContacts'] tr"));

  //verify there are 3 trs under given table
  assertEquals(3,allTrs.size());

  //Iterate all tr tags and print no of td tags in each tr tag
  for(WebElement eachTr : allTrs) {
    System.out.println(eachTr.findElements(By.tagName("td")).size());
  }
}

WebDriver Interview Questions - III


  1. How do you handle JavaScript alert using WebDriver?
    Answer : It can be handled using alert interface. Refer this post for further details.


  2. What is implicitwait & explicitwait?
    Answer: Implicit waits are basically your way of telling WebDriver the latency that you want to see if specified web element is not present that WebDriver looking for.

    Explicit waits are intelligent waits that are confined to a particular web element. Using explicit waits you are basically telling  WebDriver at the max it is to wait for X units of time before it gives up.
       Refer this post


  3. Can I navigate browser forward & backward?
    Answer : Yes, we can. Using methods available in Navigate interface we can navigate back and forth in a page.
       Refer this post

  4. How about handling iframes?
    Answer : We must switch the control to iframe before doing any operation with the elements within iframe. We can use switchTo method to switch the control to frame.
    • driver.switchTo().frame("<frame name>");
    • driver.switchTo().frame(frame index);
    • driver.switchTo().frame(<WebElement>);

  5. How to handle new windows?
    Answer : Refer this post

  6. Can we execute JavaScript using WebDriver?
    Answer : Yes, we can. Refer this post

  7. How can you perform mouse operations using WebDriver?
    Answer :  Refer this post

  8. How can I check for an element presence?
    Answer : Refer this - Method-I , Method- II

  9. How do you select options from dropdown?
    Answer : Refer this post

  10. Can we capture screenshot when case failed?
    Answer : Yes, we can take screenshot. Refer this post

Related Topics
WebDriver Interview Question - I
WebDriver Interview Question - II



WebDriver Interview Questions - II


  1. What are all classes implementing WebDriver interface?
    Answer : All the following classes implemented WebDriver Interface. ChromeDriver, EdgeDriver, EventFiringWebDriver, FirefoxDriver, HtmlUnitDriver, InternetExplorerDriver, MarionetteDriver, OperaDriver, RemoteWebDriver, SafariDriver.

  2. What are all different methods available in WebDriver?
    Answer : Some of the most important methods available in webDriver are
    • close()
    • findElement(By by)
    • findElements(By by)
    • get(String url)
    • quit()
  3. How will get the title of window?
    Answer : We can get window title using "getTitle()" method with is declared in WebDriver.

  4. What is the return type of "findElement(By by)" method?
    Answer : WebElement. findElement method will return the WebElement found in that page based on specified locator. If no matching elements are found it throws NoSuchElementException

  5. How do you clear content of a text box?
    Answer : Using "clear" method on text box we can clear the content in that.
       Example : driver.findElement(By.id("username")).clear();

  6. What is the submit method in WebElement?
    Answer : If this current element is a form, or an element within a form, then this will be submitted to the remote server. If this causes the current page to change, then this method will block until the new page is loaded.

  7. How will you get the text from below tag?
          <div name='myDiv'>Hello</div>
    Answer : We can get the text of any tag using getText() method on that element. In this case
             String text = driver.findElement(By.name("myDiv")).getText();

  8. How do you refresh the browser?
    Answer : driver.navigate().refresh();

  9. Can we make WebDriver to wait until elements loaded fully?
    Answer : Yes, We can make WebDriver to wait until all the elements/ required elements loaded fully with some timeout condition.

  10. How can I type my text in input box?
    Answer : Using sendKeys method we can type the required text in specified input box
       example : driver.findElement(By.id("coursename")).sendKeys("Selenium-Webdriver");


Related Posts
WebDriver Interview Questions - I



WebDriver Interview Questions - I


  1. What is Selenium 2.0 ?
    Answer : Selenium 2.0 is the integration of the WebDriver API & Selenium RC. WebDriver is designed to provide a simpler, more concise programming interface in addition to addressing some limitations in the Selenium-RC API.

  2. What are different languages it supports ?
    Answer : Automation scripts can be written using WebDriver in any of the following languages. java, C#, Python, Ruby, Perl, PHP

  3. Is WebDriver class or interface?
    Answer : WebDriver is an interface. WebDriver is the name of the key interface against which tests should be written, but there are several implementations.

  4. What are all different classes implemented WebDriver interface?
    Answer : WebDriver implementations include
    • HtmlUnitDriver
    • FirefoxDriver
    • InternetExplorerDriver
    • ChromeDriver
    • OperaDriver

  5. What is HtmlUnitDriver ?
    Answer : It is the fastest and most lightweight implementation of WebDriver. As the name suggests, this is based on HtmlUnit. HtmlUnit is a java based implementation of a WebBrowser without a GUI.

  6.  Which WebDriver implementation is the fastest ?
    Answer : HtmlUnitDriver. Because it executes the tests without launching the browser (headless)

  7. How to launch firefox browser using WebDriver?
    Answer : Using FirefoxDriver we can launcg firefox browser.
             WebDriver driver = new FirefoxDriver();  // this will launch firefox browser

  8. How will you load URL in browser?
    Answer : We can loan an URL in browser by calling "get" method
                  driver.get("http://www.google.com");

  9. Tell me about different types of element locators?
    Answer : By mechanism used to locate elements within a document.
            By.id("<Element ID>")
            By.name("<Element Name>");
            By.cssSelector("<css selector>");
            By.xpath("<element xpath>");
            By.linkText("<Full content of link text >");
            By.partialLinkText("<Partial content of link text>");

  10. Can we load URL without using "get" method?
    Answer : Yes, we can do using navigate() method.
                   driver.navigate().to("http://www.example.com");




Friday, October 23, 2015

Create and Delete Cookies with Selenium IDE

Create Cookie

Cookies can be created in Selenium-IDE using createCookie Method.





createCookie(nameValuePair, optionsString)
    Arguments:
   nameValuePair - name and value of the cookie in a format "name=value"
   optionsString - options for the cookie. Currently supported options include 'path', 'max_age' and 'domain'. the optionsString's format is "path=/path/, max_age=60, domain=.foo.com". The order of options are irrelevant, the unit of the value of 'max_age' is second. Note that specifying a domain that isn't a subset of the current domain will usually fail.

    Create a new cookie whose path and domain are same with those of current page under test, unless you specified a path for this cookie explicitly.

Delete Cookie

Cookies can be deleted in Selenium-IDE using deleteCookie Method.



deleteCookie(name, optionsString)
    Arguments:
     name - the name of the cookie to be deleted
    optionsString - options for the cookie. Currently supported options include 'path', 'domain' and 'recurse.' The optionsString's format is "path=/path/, domain=.foo.com, recurse=true". The order of options are irrelevant. Note that specifying a domain that isn't a subset of the current domain will usually fail.

    Delete a named cookie with specified path and domain. Be careful; to delete a cookie, you need to delete it using the exact same path and domain that were used to create the cookie. If the path is wrong, or the domain is wrong, the cookie simply won't be deleted. Also note that specifying a domain that isn't a subset of the current domain will usually fail. Since there's no way to discover at runtime the original path and domain of a given cookie, we've added an option called 'recurse' to try all sub-domains of the current domain with all paths that are a subset of the current path. Beware; this option can be slow. In big-O notation, it operates in O(n*m) time, where n is the number of dots in the domain name and m is the number of slashes in the path.



Tuesday, October 20, 2015

Latest Selenium-Server-Standalone Jar




Selenium latest version jar is available now with many issues fixes. Java change log available here.





Released on : 09-Oct-2015
Version : 2.48
Download Link : Click Here

Released on : 30-Jul-2015
Version : 2.47
Download Link : Click Here

Released on : 04-Jun-2015
Version : 2.46
Download Link : Click Here