Friday 24 January 2014

Java program to read xml file-Object-Repository.xml


OR.xml is below:
<?xml version="1.0" encoding="UTF-8"?>


<OR>
    <Page name="page1">
        <Object name = 'pg1obj1'>
            <propertytype>id </propertytype>
             <propertyvalue>//*[@id='pg1obj1'] </propertyvalue>
        </Object>
        <Object name = 'pg1obj2'>
            <propertytype>classname </propertytype>
             <propertyvalue>//*[@classname='pg1obj2'] </propertyvalue>
        </Object>
    </Page>
   
    <Page name="page2">
         <Object name = 'pg2obj1'> 
                <propertytype>xpath </propertytype>
                <propertyvalue>//*[@xpath='pg2obj1']</propertyvalue>         
            </Object>
            <Object name = 'pg2obj2'>
            <propertytype>linktext </propertytype>
             <propertyvalue>//*[@linktext='pg2obj2'] </propertyvalue>
        </Object>   
    </Page>
</OR>


Java Program to read or.xml file
package programs;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
public class ORxml {
    public static void main(String arg[]) {
        try {
            File inputfile = new File(System.getProperty("user.dir")
                    + "\\OR.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder docbuilder = dbFactory.newDocumentBuilder();
            Document doc = docbuilder.parse(inputfile);
            doc.getDocumentElement().normalize();
            System.out.println("Root element :"
                    + doc.getDocumentElement().getNodeName());
            NodeList nodelist = doc.getElementsByTagName("Object");
            System.out.println("##################################");
            for (int tmp = 0; tmp < nodelist.getLength(); tmp++) {
                Node nNode = nodelist.item(tmp);
                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element eElement = (Element) nNode;
                    System.out.println("object name : "
                            + eElement.getAttribute("name"));
                    System.out.println("propertytype : "
                            + eElement.getElementsByTagName("propertytype")
                            .item(0).getTextContent());
                    System.out.println("propertyvalue: "
                            + eElement.getElementsByTagName("propertyvalue")
                            .item(0).getTextContent());
                    System.out.println("--------------------------------------");
                }
            }
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
    }

}



Back to selenium interview questions and Answers

Back to Java interview questions and Answers


Tuesday 7 January 2014

difference between single and double slash in Xpath



/
1.It starts selection from the document node
2. It Allows you to create 'absolute' path expressions
3. e.g “/html/body/p” matches all the paragraph elements
 //
1. It starts selection matching anywhere in the document
2. It Allows you to create 'relative' path expressions
3. e.g“//p” matches all the paragraph elements


Selenium Mobile Automation



Some Good urls's till the time i write custom document for it.
https://code.google.com/p/selenium/wiki/AndroidDriver
http://manojhans.blogspot.in/2013/08/native-android-apps-automation-with.html


Back to Selenium Interview Questions and Answers


exceptions in selenium and code to resolve it

Name 5 different exceptions you had in selenium web driver and mention .What instance you got it and how do you resolve it?
·           WebDriverException
·           NoAlertPresentException
·           NoSuchWindowException
·           NoSuchElementException
·           TimeoutException
 • WebDriverException
 WebDriver Exception comes when we try to perform any action on the non-existing
driver.
WebDriver driver = new InternetExplorerDriver();
driver.get("http://google.com");
driver.close();
driver.quit();

• NoAlertPresentException
When we try to perform an action i.e., either accept() or dismiss() which is not required
at a required place; gives us this exception.
try{
driver.switchTo().alert().accept();
}
catch (NoAlertPresentException E){
E.printStackTrace();
}
• NoSuchWindowException
 When we try to switch to an window which is not present gives us this exception:
WebDriver driver = new InternetExplorerDriver();
driver.get("http://google.com");
driver.switchTo().window("Yup_Fail");
driver.close();
In the above snippet, line 3 throws us an exception, as we are trying to switch to an
window that is not present.• NoSuchFrameException
• Similar to Window exception, Frame exception mainly comes during switching between
the frames.
WebDriver driver = new InternetExplorerDriver();
driver.get("http://google.com");
driver.switchTo().frame("F_fail");
driver.close();
In the above snippet, line 3 throws us an exception, as we are trying to switch to an
frame that is not present.
• NoSuchElementException
 This exception is thrown when we WebDriver doesn’t find the web-element in the DOM.
WebDriver driver = new InternetExplorerDriver();
driver.get("http://google.com");
driver.findElement(By.name("fake")).click();
• TimeoutException
 Thrown when a command does not complete in enough time.
All the above exceptions were handled using try catch exceptions.

  

How to ZIP files in Selenium




// Sample Function to make zip of reports
public static void zip(String filepath){
try
{
File inputFolder=new File('Mention file path her");
File outputFolder=new File("Reports.zip");
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(outputFolder)));
BufferedInputStream in = null;
byte[] data  = new byte[1000];
String files[] = inputFolder.list();
for (int j=0; j<files.length; i++)
{
in = new BufferedInputStream(new FileInputStream
(inputFolder.getPath() + "/" + files[j]), 1000);
out.putNextEntry(new ZipEntry(files[j]));
int totalcount;
while((totalcount= in.read(data,0,1000)) != -1)
{
out.write(data, 0, totalcount);
}
out.closeEntry();
  }
  out.flush();
  out.close();
}
  catch(Exception e)
  {
 e.printStackTrace();
           return "Fail - " + e.getMessage();
  }
 }


Back to Selenium Interview questions and Answers

set the execution order for TestNg Testcases.

In TestNG I have some test's  Test1-Test2-
Test3-Test4-Test5I want to run my execution 
order is Test5-Test1-Test3-Test2-Test4.How 
do you set the execution order can you explain 
for that?

package programs;import org.testng.annotations.Test;public class testngexecution { @Test(priority=2)public void test1(){System.out.print("Inside Test1"); }@Test(priority=4)public void test2(){System.out.print("Inside Test2"); }@Test(priority=3)public void test3(){System.out.print("Inside Test3"); }@Test(priority=5)public void test4(){System.out.print("Inside Test4"); }@Test(priority=1)public void test5(){System.out.print("Inside Test5"); }


Back to Selenium Interview Questions and Answers

How to take the screen shots in seelnium 2.0



// store screenshots
public static void captureScreenShot(String filePath) {
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
   try {
FileUtils.copyFile(scrFile, new File(filePath));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
   }

Back to Interview Questions and Answers

Difference between find element () and findelements ()

Difference between find element () and find elements ()?
findElement() :
Find the first element within the current page using the given "locating mechanism".
Returns a single WebElement.
Syntax: WebElement findElement(By by)
Ex:
driver.get("http://ruchi-myseleniumblog.blogspot.in/"); 
WebElement widget = driver.findElement(By .xpath(".//*[@id='BlogArchive1_ArchiveList']"));
widget.click();
findElements() :
Find all elements within the current page using the given "locating mechanism".
Returns List of WebElements.
Syntax: 
        WebElement ullist = driver.findElement(By.className("posts"));
List<WebElement> posts = ullist.findElements(By.tagName("li"));
System.out.println("List of Posts are Below");
for (int i = 0; i < posts.size(); i++) {
String post = posts.get(i).findElement(By.tagName("a")).getText();

System.out.println(post);
}

Sample Program:

package programs;

import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;

public class Sample {
WebDriver driver;

@Test
public void test() {

driver = new FirefoxDriver();
driver.get("http://ruchi-myseleniumblog.blogspot.in/");
WebElement widget = driver.findElement(By
.xpath(".//*[@id='BlogArchive1_ArchiveList']"));
WebElement hierarchy = widget.findElement(By.className("hierarchy"));
System.out.println("Year is "
+ hierarchy.findElement(By.className("post-count-link"))
.getText());
System.out.println("Year-Posts size  is "
+ hierarchy.findElement(By.className("post-count")).getText());
WebElement sublist = hierarchy.findElement(By.className("hierarchy"));
System.out.println("Month is "
+ sublist.findElement(By.className("post-count-link"))
.getText());
System.out.println("Month-Posts size  is "
+ sublist.findElement(By.className("post-count")).getText());
WebElement ullist = driver.findElement(By.className("posts"));
List<WebElement> posts = ullist.findElements(By.tagName("li"));
System.out.println("List of Posts are Below");
for (int i = 0; i < posts.size(); i++) {
String post = posts.get(i).findElement(By.tagName("a")).getText();

System.out.println(post);
}
driver.close();
}


}

What is actions class in web driver

71. What is actions class in web driver?
Actions class with web Driver help is Sliding element, Resizing an Element, Drag & Drop
Hovering a mouse, especially in a case when dealing with mouse over menus.

Dragging & Dropping an Element:
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;
public class testDragandDrop {
  public static void main(String[] args) throws InterruptedException {
   WebDriver driver = new FirefoxDriver();
  driver.get("http://jqueryui.com/resources/demos/droppable/default.html"); 
  WebElement draggable = driver.findElement(By.xpath("//*[@id='draggable']"));
  WebElement droppable = driver.findElement(By.xpath("//*[@id='droppable']"));   
  Actions action = new Actions(driver); 
action.dragAndDrop(draggable, droppable).perform();
  }
}
Sliding an Element:
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;
public class testSlider {
  /**
  * @param args
  * @throws InterruptedException
  */
 public static void main(String[] args) throws InterruptedException {
   WebDriver driver = new FirefoxDriver();
  driver.get("http://jqueryui.com/resources/demos/slider/default.html"); 
  WebElement slider = driver.findElement(By.xpath("//*[@id='slider']/a")); 
  Actions action = new Actions(driver);
  Thread.sleep(3000);
  action.dragAndDropBy(slider, 90, 0).perform();
  }
}
Re-sizing an Element:
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;
public class testResizable {
  public static void main(String[] args) throws InterruptedException {
   WebDriver driver = new FirefoxDriver();
  driver.get("http://jqueryui.com/resources/demos/resizable/default.html");
    WebElement resize = driver.findElement(By.xpath("//*[@id='resizable']/div[3]")); 
  Actions action = new Actions(driver);
  action.dragAndDropBy(resize, 400, 200).perform();
    }
}



How to switch between frames

70. How to switch between frames?

WebDriver's driver.switchTo().frame() method takes one of the three possible arguments:
·         A number.
Select a frame by its (zero-based) index. That is, if a page has three frames, the first frame would be at index "0", the second at index "1" and the third at index "2". Once the frame has been selected, all subsequent calls on the WebDriver interface are made to that frame.
·         A name or ID.
Select a frame by its name or ID. Frames located by matching name attributes are always given precedence over those matched by ID.
Select a frame using its previously located WebElement.
Get the frame by it's id/name or locate it by driver.findElement() and you'll be good.



What are the different assertions in SIDE

What are the different assertions in SIDE?

Assertions are like Accessors, but they verify that the state of the application conforms to what is expected. Examples include "make sure the page title is X" and "verify that this checkbox is checked".
All Selenium Assertions can be used in 3 modes: "assert", "verify", and "waitFor".

 For example, you can "assertText", "verifyText" and "waitForText". When an "assert" fails, the test is aborted. When a "verify" fails, the test will continue execution, logging the failure. This allows a single "assert" to ensure that the application is on the correct page, followed by a bunch of "verify" assertions to test form field values, labels, etc.

"waitFor" commands wait for some condition to become true (which can be useful for testing Ajax applications). They will succeed immediately if the condition is already true. However, they will fail and halt the test if the condition does not become true within the current timeout setting (see the setTimeout action below).



How to highlight an object with selenium and java

How to highlight an object like qtp/uft does through selenium and java?
public void highlightElement(WebDriver driver, WebElement element) {
for (int i = 0; i < 2; i++)
{
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].setAttribute('style', arguments[1]);", element, "color: yellow; border: 2px solid yellow;");
js.executeScript("arguments[0].setAttribute('style', arguments[1]);", element, "");
}}
Call the highlightElement method and pass webdriver and WebElement which you want to highlight as arguments.


TestNG vs. Junit

TestNG Vs.Junit?
Advantages of TestNG over Junit
·         In Junit we have to declare @BeforeClass and @AfterClass which is a constraint where as in TestNG there is no constraint like this.
·         Additional Levels of setUp/tearDown level are available in TestNG like @Before/AfterSuite,@Before/AfterTest and @Before/AfterGroup
·         No Need to extend any class in TestNG.
·         There is no method name constraint in TestNG as in Junit. You can give any name to the test methods in TestNG
·         In TestNG we can tell the test that one method is dependent on another method where as in Junit this is not possible. In Junit each test is independent of another test.
·         Grouping of testcases is available in TestNG where as the same is not available in Junit.
·         Execution can be done based on Groups. For ex. If you have defined many cases and segregated them by defining 2 groups as Sanity and Regression. Then if you only want to execute the “Sanity” cases then just tell TestNG to execute the “Sanity” and TestNG will automatically execute the cases belonging to the “Sanity” group.
·         Also using TestNG your selenium test case execution can be done in parallel.