Automation Using Selenium Webdriver

Monday 12 December 2016

Open a link in a New tab

We use actions objects to open any hyperlink in a new tab. e.g.

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.annotations.Test;
import java.util.concurrent.TimeUnit;

public class NewTab {
    public static void main(String[] args) {
       WebDriver driver = new FirefoxDriver();
        driver.get("http://www.flipcart.com/");
        driver.manage().window().maximize();
        Actions act = new Actions(driver);
        WebElement link = driver.findElement(By.linkText("Flipkart First"));
        act.moveToElement(link).contextClick().sendKeys("F").perform();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
         driver.close();
   
    }
}

Sunday 11 December 2016

Final ,finally and finalize()?

Final:

  • Any variable declare along with final modifier then those variables treated as final variable.
  •  if we declare final variables along with static will became constants.
  • public final String name = "foo"; //never change this value
  • If you declare method as final that method also known as final methods.Final methods are not overridden.means we can't overridden that method in anyway.
  • public final void add(){
     }
     public class A{
     void add(){
     //Can't override
     }

     }
  • If you declare class is final that class is also known as final classes.Final classes are not extended.means we can't extens that calss in anyway.
  • public final class indhu{
     }
     public class classNotAllowed extends indhu {...} //not allowed

Finally:

  • Finally blocks are followed by try or catch.finally blocks are complasary executable blocks.But finally is useful for more than just exception handling.
  •  it allows the programmer to avoid having cleanup code accidentally bypassed by a return,
     continue, or break,Closing streams, network connection, database connection. Putting cleanup  code in a finally block is always a good practice even when no exceptions are anticipated
  •  where finally doesn't execute e.g. returning value from finally block, calling System.exit from try block etc
  • finally block always execute, except in case of JVM dies i.e. calling System.exit() . 

     lock.lock();
    try {
      //do stuff
    } catch (SomeException se) {
      //handle se
    } finally {
      lock.unlock(); //always executed, even if Exception or Error or se
      //here close the database connection and any return statements like that we have to write
    }

Finalize():

  • finalize() is a method which is present in Java.lang.Object class.
  •  Before an object is garbage collected, the garbage collector calls this finalize() of object.Any unreferncebefore destorying if that object having any connections with databse or anything..It will remove  the connections and it will call finalize() of object.It will destroy the object.
  • If you want to Explicitly call this garbage collector you can use System.gc() or Runtime.gc() objects are there from a long time the garbage collector will destroy that objects.
  • public void finalize() {
      //free resources (e.g. unallocate memory)
      super.finalize();
    }

Thursday 8 December 2016

Difference between enumeration and iterator and listiterator

Enumeration:

  • Enumeration interface implemented in java 1.2 version.So Enumeration is legacy interface.
  • Enumeration uses elements() method.
  • Enumeration can traverse in forward direction only.
  • Enumeration having methods like hasMoreElement(),nextElement().

Program:

package com.ieofjavaforus;
import java.util.Enumeration;
import java.util.Vector;
public class EnumerationDemo {
public static void main(String[] args) {
Vector vector=new Vector();
vector.add("indhu");
vector.add("sindhu");
vector.add("swathi");
vector.add("swathi");
vector.add(null);
vector.add(null);
Enumeration en = vector.elements();  
    while(en.hasMoreElements()){  
         System.out.println(en.nextElement());  
    }  
}
}

Output:

indhu
sindhu
swathi
swathi
null
null

Iterator:

  • Iterator is implemented on all Java collection classes.
  • Iterator uses iterator() method.
  • Iterator can traverse in forward direction only.
  • Iterator having methods like hasNext(), next(), remove().

Program:

package com.ifjavaforus;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

public class IteratorDemo{
public static void main(String[] args) {
TreeMap treeMap=new TreeMap();
treeMap.put("g", "indhu");
treeMap.put("d", "sindhu");
treeMap.put("3", "swathi");
treeMap.put("d", "sindhu");
if(!treeMap.isEmpty()){
Iterator it=treeMap.entrySet().iterator();
while(it.hasNext()){
Map.Entry obj=(Entry) it.next();
System.out.println(obj.getValue());
}
}
}

}
Output:

swathi
sindhu
indhu

ListIterator:

  • ListIterator is implemented only for List type classes
  • ListIterator uses listIterator() method.
  • ListIterator can traverse in forward and backward directions.
  • ListIterator having methods like 
  • hasNext()
  • next()
  • previous()
  • hasPrevious()
  • remove()
  • nextIndex()
  • previousIndex().

Program:

package com.iofjavaforus;
import java.util.ArrayList;
import java.util.ListIterator;
public class ListIteratorDemo{
public static void main(String[] args) {
ArrayList arrayList=new ArrayList();
arrayList.add("indhu");
arrayList.add("sindhu");
arrayList.add("saidesh");
arrayList.add(null);
arrayList.add(null);
ListIterator it=arrayList.listIterator();
while(it.hasNext()){
System.out.println(it.next());
}
}

}

Output:
indhu
sindhu
saidesh
null
null

Thursday 1 December 2016

Java Interview programs on Strings

1.Reverse a String Without using String API?


package com.java;

public class ReverseString {

public static void main(String[] args) {

String str="Hello world";
String revstring="";

for(int i=str.length()-1;i>=0;--i){
revstring +=str.charAt(i);
}

System.out.println(revstring);
}
}


Program:

output: dlrow olleH.

2)Sorting the String without using String API?


package com.java;

public class SortString {

 public static void main(String[] args) {

  String original = "edcba";
 int j=0;
   char temp=0;

     char[] chars = original.toCharArray();
     for (int i = 0; i <chars.length; i++) {
         for ( j = 0; j < chars.length; j++) {
         if(chars[j]>chars[i]){
             temp=chars[i];
             chars[i]=chars[j];
              chars[j]=temp;
          }
     }
  }

    for(int k=0;k<chars.length;k++){
    System.out.println(chars[k]);
   }

 }
}

program:

output:abcde.

3.Sort the String with using String API?

program:
package com.java;

 public class SortString {

 public static void main(String[] args) {
   String original = "edcba";

   char[] chars = original.toCharArray();
   Arrays.sort(chars);

    String sorted = new String(chars);
     System.out.println(sorted);

}
}




OutPut:abcde

4.Check String is palindrome or not?

program:

Solution #1:

package com.java;

public class PalindromeDemo{

public static void main(String[] args) {

String str="MADAM";
String revstring="";

for(int i=str.length()-1;i>=0;--i){
revstring +=str.charAt(i);
}

System.out.println(revstring);

if(revstring.equalsIgnoreCase(str)){
System.out.println("The string is Palindrome");
}
else{
System.out.println("Not Palindrome");
}

}

}



  Output:

The string is Palindrome

Solution #2:

package com.java;

  import java.util.Scanner;

 public class Palindrome {

public static void main(String[] args)
{

Scanner in = new Scanner(System.in);

 System.out.println("Enter a string");
 String str=in.nextLine();

StringBuffer strone=new StringBuffer(str);
 StringBuffer strtwo=new StringBuffer(strone);

  strone.reverse();

System.out.println("Orginal String ="+strtwo);
System.out.println("After Reverse ="+strone);

if(String.valueOf(strone).compareTo(String.valueOf(strtwo))==0)
   System.out.println("Result:Palindrome");
   else
    System.out.println("Result:Not Palindrome");

   }

}
 Output:

Enter a string
MOOM
Orginal String =MOOM
After Reverse =MOOM

Result:Palindrome

5.Program to Check given number is palindrome or not?

Program:

 package com.java;

import java.util.Scanner;

public class Palindrome {

public static void main(String[] args)
{

System.out.println("Please Enter a number : ");
      int givennumber = new Scanner(System.in).nextInt();
      int number=givennumber;
       int reverse=0;
        while (number != 0) {
           int remainder = number % 10;
            reverse = reverse * 10 + remainder;
            number = number / 10;
        }        
if(givennumber == reverse)
   System.out.println("Result:Palindrome");
    else
    System.out.println("Result:Not Palindrome");
    }

}

 Output:

Please Enter a number :
535
Result:Palindrome.

Super keyword interview questions java

Super Keyword:



The functionality of super keyword is only to point the immediate super class object of the current object.
super keyword is applicable only in the non static methods and super keyword not applicable in the static methods.
super keyword used to access the members of the super class object.
super.member;
It is used to store super class non static members memory reference through current sub class object for separating super class members from subclass members.
We can call super class constructor in sub class using super() call.
We can access super class methods and variables in sub class using super.variable_name, super.method();

Uses of super :


1. By using super keyword we can access super class variables in sub class.

Using super keyword we can access super class variables from sub class.
super.variable_name.
package com.superkeywordinjava;
 public Class SuperDemo{

int a,b;

}

package com.superkeywordinjava;
public Class Subdemo extends SuperDemo{
int a,b;
void disply(){

System.out.println(a);
System.out.println(b);
super.a=10;
super.b=20;

System.out.println(super.a);
System.out.println(super.b);

}

public static void main (String args[]) {
 Subdemo obj= new Subdemo();

obj.a=1;
obj.b=2;

obj.disply();



}
}

Output:

1
2
10
20

2. By using super keyword we can access super class methods in sub class.
Using super keyword we can call super class methods from sub class.
super.method();.

package com.instanceofjavaforus;
 public Class SuperDemo{
int a,b;

public void show() {

System.out.println(a);
System.out.println(b);

}
}

package com.instanceofjavaforus;
public Class Subdemo extends SuperDemo{
int a,b;
void disply(){

System.out.println(a);
System.out.println(b);

super.a=10;
super.b=20;

 super.show();

}

public static void main (String args[]) {

 Subdemo obj= new Subdemo();

obj.a=1;
obj.b=2;

obj.disply();


}
}

Output:

1
2
10
20

3. We can call super class constructor from class constructor:
 By using super keyword we can able to call super class constructor from sub class constructor.
Using super();
For  the super(); call must be first statement in sub class constructor.

package com.superinterviewprograms;
public Class SuperDemo{

int a,b;

SuperDemo(int x, int y){
 a=x;
b=y
System.out.println("Super class constructor called ");
}


}




package com.superinterviewprograms;

public Class Subdemo extends SuperDemo{

int a,b;

SubDemo(int x, int y){
super(10,20);
 a=x;
b=y
System.out.println("Sub class constructor called ");
}

public static void main (String args[]) {
 Subdemo obj= new Subdemo(1,2);


}
}
Output:
Super class constructor called
Sub class constructor called

key points:

Super(); call must be first statement inside constructor.
By default  in every class constructor JVM adds super(); call in side the constructor as first statement which calls default constructor of super class, if we are not not calling it.
If we want to call explicitly we can call at that time default call wont be there.

4.What will happen if  we are calling super() in constructor but our class does not extending any class?

 if our class not extending any class Yes still we can use super(); call in our class
Because in java every class will extend Object class by default this will be added by JVM.
But make sure we are using only super(); default call we can not place parameterized super call because Object class does not have any parameterized constructor.

package com.superinterviewprograms;

public Class Sample{

Sample(){
super();
System.out.println("Sample class constructor called ");

}

public static void main (String args[]) {

 Sample obj= new Sample();

}
}

Output:

Sample class constructor called


5.What if there is a chain of extended classes and 'super' keyword is used


package com.superinterviewprograms;
public Class A{

A(){
 System.out.println("A class constructor called ");
}


}

package com.superinterviewprograms;
public Class B extends A{

B(){

 System.out.println("B class constructor called ");

}


}

package com.superinterviewprograms;
public Class C extends B{

C(){
 System.out.println("C class constructor called ");
}


public static void main (String args[]) {
 C obj= new C();


}
}

Output:

A class constructor called
B class constructor called
C class constructor called

6. Can we call super class methods from static methods of sub class?

No we can not use super in static methods of sub class Because super belongs to object level so we can not use super in static methods.
If we try to use in sub class static methods compile time error will come.



Wednesday 30 November 2016

Advanced Selenium Keypress Using Robot API (JAVA)


Keypress event using Robot API (JAVA)
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

public class KeyBoardExample {
    public static void main(String[] args) {
        try {
            Robot robot = new Robot();
            robot.delay(3000);
            robot.keyPress(KeyEvent.VK_Q); //VK_Q for Q
        } catch (AWTException e) {
            e.printStackTrace();
        }
    }
}

With Selenium::

Sometimes we need to press any key in order to test the key press event on web application. For an instance to test the ENTER key on login form we can write something like below with Selenium WebDriver
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;

public class LoginTest {
 
    @Test
    public void testEnterKey() throws InterruptedException
    {
        WebDriver driver=new FirefoxDriver();      
        Robot robot=null;      
        driver.get("test-url");
        driver.manage().window().maximize();
        driver.findElement(By.xpath("xpath-expression")).click();
        driver.findElement(By.xpath("xpath-expression")).sendKeys("username");
        driver.findElement(By.xpath("xpath-expression")).sendKeys("password");      
        try {
            robot=new Robot();
        } catch (AWTException e) {
            e.printStackTrace();
        }
        //Keyboard Activity Using Robot Class
        robot.keyPress(KeyEvent.VK_ENTER);
    }
}

Mouse Event using Robot API (JAVA)

import java.awt.Robot;
public class MouseClass {
 public static void main(String[] args) throws Exception {
     Robot robot = new Robot();

     // SET THE MOUSE X Y POSITION
     robot.mouseMove(300, 550);
     }
}import java.awt.Robot;

public class MouseClass {
 public static void main(String[] args) throws Exception {
     Robot robot = new Robot();

     // SET THE MOUSE X Y POSITION
     robot.mouseMove(300, 550);
     }
}


Press left/right button of mouse::

import java.awt.Robot;
import java.awt.event.InputEvent;

public class MouseEvent {
 public static void main(String[] args) throws Exception {
     Robot robot = new Robot();

     // LEFT CLICK
     robot.mousePress(InputEvent.BUTTON1_MASK);
     robot.mouseRelease(InputEvent.BUTTON1_MASK);

     // RIGHT CLICK
     robot.mousePress(InputEvent.BUTTON3_MASK);
     robot.mouseRelease(InputEvent.BUTTON3_MASK);
     }
}

Click and scroll the wheel::

import java.awt.Robot;
import java.awt.event.InputEvent;

public class MouseClass {
 public static void main(String[] args) throws Exception {
     Robot robot = new Robot();

     // MIDDLE WHEEL CLICK
     robot.mousePress(InputEvent.BUTTON3_DOWN_MASK);
     robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK);

     // SCROLL THE MOUSE WHEEL
     robot.mouseWheel(-100);
     }
}

Pattern Program in java Part-2

#4 Java Program to print Numbers in Below pattern

1 2 3 4 5 6 7 8 9 
 1 2 3 4 5 6 7 8 
  1 2 3 4 5 6 7 
   1 2 3 4 5 6 
    1 2 3 4 5 
     1 2 3 4 
      1 2 3 
       1 2 
        1 
  1. package com.Java;
  2. public class NumbersFormat {
  3. public static void main(String[] args) {
  4.  
  5. int r, c1,c2;
  6.  
  7. for (r = 1; r <= 10; r++) {
  8.  
  9. for (c1 = 1; c1 <r; c1++) {
  10.   System.out.print(" ");
  11. }
  12.  
  13. for (c2 = 1; c2 <= 10 - r; c2++) {
  14.     System.out.print(c2 + " ");
  15. }
  16.  
  17. System.out.println("");
  18. }
  19.  
  20. }
  21.  
  22. }

Output:
  1. 1 2 3 4 5 6 7 8 9  
  2. 1 2 3 4 5 6 7 8 
  3.   1 2 3 4 5 6 7 
  4.    1 2 3 4 5 6 
  5.     1 2 3 4 5 
  6.      1 2 3 4 
  7.       1 2 3 
  8.        1 2 
  9.         1 




#5 Java Program to Print Numbers in Below pattern:

        1 
       1 2 
      1 2 3 
     1 2 3 4 
    1 2 3 4 5 
   1 2 3 4 5 6 
  1 2 3 4 5 6 7 
 1 2 3 4 5 6 7 8 
1 2 3 4 5 6 7 8 9 
1 2 3 4 5 6 7 8 9 10 


  1. package com.Java;
  2. public class NumbersFormat {
  3. public static void main(String[] args) {
  4.  
  5. int r, c1,c2;
  6.  
  7. for (r = 1; r <= 10; r++) {
  8.  
  9. for (c1 = 1; c1 <10-r; c1++) {
  10.   System.out.print(" ");
  11. }
  12.  
  13. for (c2 = 1; c2 <= r; c2++) {
  14.     System.out.print(c2 + " ");
  15. }
  16.  
  17. System.out.println("");
  18. }
  19.  
  20. }
  21.  
  22. }

Output:
  1.         1 
  2.        1 2 
  3.       1 2 3 
  4.      1 2 3 4 
  5.     1 2 3 4 5 
  6.    1 2 3 4 5 6 
  7.   1 2 3 4 5 6 7  
  8. 1 2 3 4 5 6 7 8 
  9. 1 2 3 4 5 6 7 8 9 
  10. 1 2 3 4 5 6 7 8 9 10