Sunday, November 25, 2012

Performing fireEvent in WebDriver

WebElement element = driver.findElement(By.id("myElement"));
JavascriptLibrary javascript = new JavascriptLibrary();
javascript.callEmbeddedSelenium(driver, "triggerEvent", element, "blur");

Ref:https://groups.google.com/forum/?fromgroups#!topic/selenium-users/jk59XG2TQk8

Saturday, November 17, 2012

window.showModalDialog - Webdriver Issue

Last month I was automating a scenario where the popup window showsup with Yes/No button. While verifying manually i thought it can be handled either by using Alert / selectWindow and perform actions.
At first I tried to record the same scenario using Selenium-IDE
Unfortunately IDE is not able to recognize the window :(.

So I thought to verify how the popup window was actually called/invoked.
- On click a button , it popups the child window and the main window is still waiting to complete its transcation.
-  Webdriver's driver will be waiting for its turn to complete the transcation , and not able to execute the statements until i close the popup manually. (In IE with selectWindow.. worked , but in Firefox ..NO).
-I verified the button using firebug , and the html code was something like <... onclick="return mypopup('Click Yes if you need to continue')"....>
-And in the mypopup javascript code is using window.shwoModalDialog
-For me I need to click Yes , and the application is actually returning true. if No, returns false.

So finally I written a piece of code which updates the the HTML code in the app at run time using.

public void clickElementAndConfirmPopup(){
WebElement element =  ..findElement.....
((JavascriptExecutor) DriverFactory.getDriver()).executeScript(
"arguments[0].setAttribute('onclick',arguments[1]);", element, "return true");
element.click(); } public void clickElementAndConfirmPopup(){

WebElement element = ..findElement.....
((JavascriptExecutor) DriverFactory.getDriver()).executeScript(
"arguments[0].setAttribute('onclick',arguments[1]);", element, "return false");
element.click();
}

- And now able to handle in both browsers (IE and FireFox)..



Friday, October 26, 2012

Memory Leak Analyzer (Got java.lang.RuntimeException: java.lang.OutOfMemoryError: Java heap space)

One fine morning my client was asked me to develop an a small Framework as per his needs. And I started writing code in Java which drives lot of excel files , xmls etc. Due to emergency I delivered  code to accomplish the immediate needs and knowing that it may have some memory leaks which I need to fix and which is my next immediate high priority one.

So I used MAT to find and analyze the code. And found it was really a cool plug-in.
1. How to install MAT plugin
Install plugin from - http://download.eclipse.org/mat/1.2/update-site/
2. MAT generates .hprof file , how to get it.
In Run-Configuration , under Argument tab in VM argument section added
    -XX:+HeapDumpOnOutOfMemoryError
3. If .hprof file is too big?
Add -vmargs -XX:PermSize=256m -XX:MaxPermSize=256m -Xms256m -Xmx1024m into eclipse.ini
4.How to open .hprof in Eclipse.
 Open MAT perspective , and File->Open Head Dump and Open .hprof generated in the project.
5.Analysis....

 

Tuesday, October 16, 2012

WebDriver - How to run tests on InternetExplorer

1. Download IEDriverServer from http://code.google.com/p/selenium/downloads/list
2.Create WebDriver instance as follows
WebDriver localDriver=;

capability = DesiredCapabilities.internetExplorer();
capability.setJavascriptEnabled(
true);
capability.setCapability(CapabilityType.

TAKES_SCREENSHOT, true);
capability.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capability.setCapability(CapabilityType.
SUPPORTS_JAVASCRIPT, true);
capability.setCapability(InternetExplorerDriver.
INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
try {
localDriver.setDriver(new RemoteWebDriver(new URL("http://127.0.0.1:5555"), capability));
localDriver.getDriver().manage().timeouts().implicitlyWait(30, TimeUnit.

SECONDS);
}
catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
3. In your testcase method use localDriver
4. Run IEDriverServerxxx.exe
5. Run your tests.

Wednesday, August 1, 2012

10 Commandments for Test Automation Outsourcing

http://shrinik.blogspot.in/2008/09/10-commandments-for-automation.html

Here is an outline .. read complete details in the actual blog.
Automation is not an answer to your testing problems
Automation is White Elephant
Anything that is quickly creatable – is quickly perishable
Your business users can not create and own Automation solutions
Judge your vendor by the questions they ask about automation Higher % of offshoring in automation higher investments to make
Pay attention to dependencies and Quality of current test Artifacts
Decide Acceptance criteria
Avoid linking an automation project (and its deliverables) to application release dates
Record and Playback (RP) Automation is for Kids

Do you agree with these commandments? Any different experience?

[update]
Some additional tips :
What a Vendor should ask you
- questions about your manual testing practice
- Your objectives of Automation and expectations
- Readiness to take up automation in terms of test cases, application state and environment
- Ask about your expectations on ROI

What vendor should suggest you
- Plan for automation maintenance when supplier is gone.
- Automation may or may not reduce cycle time – that depends upon nature of tests, application technology stack, nature of tool etc
- Automation may or may not reduce the cost of testing.

What to look for in an automation proposal
- Acceptance criteria
- Automation design details – how tests will be structured
- Environment related assumptions
- Pre-requisites about tool licenses, test cases, test data, access to developers, testers and business users (for clarifications about test cases)