Pages

Friday, 9 March 2012

How can I execute Javascript?

We can execute Javascript by casting the WebDriver instance to a JavascriptExecutor:

//Instantiate any WebDriver; Eg. Firefox
 WebDriver driver = new FirefoxDriver();
 driver.get("http://seleniumwebdriverfaq.tumblr.com/");
 //Casting the WebDriver instance to a JavascriptExecutor
 JavascriptExecutor js = (JavascriptExecutor) driver;
 //Execute the JavaScript - Eg. to get the page title
 js.executeScript("return document.title");
 //Print the out put
 System.out.println("Page title from Java script: "
      +js.executeScript("return document.title"));
 System.out.println("Page title from driver.getTitle() : "
      +driver.getTitle());
 //JUnit Assertion
 Assert.assertEquals(js.executeScript
    ("return document.title"),driver.getTitle());

How to take screenshot of the test page?

We can take entire page screenshot by following code:


   //Instantiate any WebDriver; Eg. Firefox
WebDriver driver = new FirefoxDriver();
driver.get("http://seleniumwebdriverfaq.tumblr.com/");
//Get the screenshot as file
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
// Copy the screenshot to your file system
FileUtils.copyFile(scrFile, new File("c:\screenshots\screenshot.png"));

How can I start Firefox with add-ons installed?

Create a Firefox profile and add required add-ons. 


Take ‘Firebug’ as an example, save the Firebug XPI into the C:FF_addons folder as firebug.xpi (Download XPI file from Firebug download page, right-click on the “Download Now” and save as C:FF_addonsfirebug.xpi).


Then create a Firefox profile and add Firebug add-on while instantiating FirefoxDriver as below:


   String firebugFilePath = "C:\FF_addons\firebug.xpi";
FirefoxProfile profile = new FirefoxProfile();
profile.addExtension(new File(firebugFilePath));
// Add more FF addons if required
WebDriver driver = new FirefoxDriver(profile);

Thursday, 8 March 2012

How can I handle alert dialog box?

Below method will handle the alert dialog displayed and also it will return the alert message displayed.

public String getAlert() { 
     Alert alert = driver.switchTo().alert(); 
     String alertMsg = alert.getText();
     alert.accept();
     return alertMsg; } 

Wednesday, 7 March 2012

Why am getting security message while instantiating IE WebDriver?

Security Message:“Protected Mode must be set to the same value (enabled or disabled) for all zones.”


Solutions 1:


Set manually the protected mode to the same value (enabled or disabled) for all zones in ‘Internet Options’ —> ‘Security’ Tab.


Solution 2:


Set a capability while instantiating IE driver, as shown below:


 DesiredCapabilities capability=DesiredCapabilities.internetExplorer();
capability.setCapability(
InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_
IGNORING_SECURITY_DOMAINS, true);
WebDriver webdriver = new InternetExplorerDriver(capability);

How can I Kill the WebDriver instance?

The quit() method will kill the WebDriver instance.


That is,


//If "driver" is an instance of WebDriver;Then to kill the instance:
driver.quit();

How can I read background-color of an element?

We can get/read the background-color of an element by using getCssValue() method of WebDriver:


driver.get("http://www.google.co.in/");
String color = driver.findElement(By.name("btnK")).getCssValue("background-color");

System.out.println("The background color of Google search button"+color);

How can I get required attribute value of the element?

We can get the specific attribute of an element by using getAttribute() method:


//Find the element
WebElement gButton = driver.findElement(By.name("btnK"));
// Get the required attribute value
String gButtonStyle = gButton.getAttribute("style");

System.out.println("The Google search button's style attribute value is "+gButtonStyle);

The getAttribute() method gets the value of an element attribute specified.


Suppose, you want to get the value/content of a text field then, specify the attribute name as “value” (instead off “style”).

How can I get the text of the element?

Using getText() method, we can get the text of the element.


That is,


WebElement gButton = driver.findElement(By.name("btnK"));
String gButtonText = gButton.getText();
System.out.println("The Google search button's display text is "+gButtonText);

The getText() method gets the text of an element. This uses either the textContent (Mozilla-like browsers) or the innerText (IE-like browsers) of the element, which is the rendered text shown to the user.

How can I get title of the window?

We can get the title of the window by using getTitle() method:


String title = driver.getTitle(); 
System.out.println("Title of the page is "+title);

Monday, 5 March 2012

How can I move backwards or forwards in browser's history?

We can move backwards and forwards in browser’s history as below:


//To go backward
driver.navigate().back();
//To go forward
driver.navigate().forward();

Sunday, 4 March 2012

How can I use/emulate Selenium RC with WebDriver?

The Java version of WebDriver provides an implementation of the Selenium-RC API. It allows those who have existing test suites using the Selenium-RC API to use WebDriver under the covers.


Example:


// You may use any WebDriver implementation. Firefox is used here as an example
WebDriver driver = new FirefoxDriver();

// A "base url", used by selenium to resolve relative URLs
String baseUrl = "http://www.google.com";

// Create the Selenium implementation
Selenium selenium = new WebDriverBackedSelenium(driver, baseUrl);

// Perform actions with selenium
selenium.open("http://www.google.com");
selenium.type("name=q", "cheese");
selenium.click("name=btnG");

// Get the underlying WebDriver implementation back. This will refer to the
// same WebDriver instance as the "driver" variable above.
WebDriver driverInstance = ((WebDriverBackedSelenium) selenium).getWrappedDriver();

//Finally, close the browser. Call stop on the WebDriverBackedSelenium instance
//instead of calling driver.quit(). Otherwise, the JVM will continue running after
//the browser has been closed.
selenium.stop();

How can I check the presence of WebElement on page?

We can check the presence of WebElement on page by implementing custom isElementPresent method as below:


	protected boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}

This method will return true, if the WebElement with ‘by’ available otherwise returns false.