Sunday, 30 September 2012

Handling Alerts in Selenium/WebDriver

Hello All,

It has been a long long time, when i wrote something for you guys on my blog. Got some time to write something, so today it will be related to handling alerts in selenium/webdriver.This post is written keeping Selenium 2.0 in my mind. So it may not hold good for Selenium RC users.

Selenium can handle  java script alerts in a very effective manner but it can not handle modal alert box which gets created by OS itself e.g.:  java script error message alert. Now how do you handle these java script alerts, what can you do with those alerts, lets see one by one with the code.

Let us take a Scenario as an example -:
 Select a object from the page, Click on Delete button. It triggers a alert saying "Object is going to be deleted from the database, Click OK to Confirm or Cancel to Cancel the Operation".

We need to test the message of the Alert, Clicking Ok and Clicking Cancel also.
Steps to be Performed
=========================
Select the Object to delete from the page.
Click on Delete button, it triggers the Alert message.




/* Code to switch the control to Alert message*/
Alert testAlrt=driver.switchTo().alert();
testAlrt is the Controlling object of the Alert. Now you can use this object to Accept/get Text/Dismiss the alert.

/* To get the text from the alert */
String sAltText=testAlrt.getText();

/* To Accept any alert, it means Clicking OK button */
testAlrt.accept();

/* To dismiss any alert, It means Clicking Cancel button */
testAlrt.dismiss();

/* If the Alerts gets created using Ajax call, then you may need to wait till the Alert present */
WebDriverWait wdWait= new WebDriverWait(driver, 10);
wdWait.until(ExpectedConditions.alertIsPresent());



This is all about handling Alerts in your Selenium test scripts. Please give back a feedback about the post.

Thanks!!

Saturday, 18 August 2012

Handling Popup Windows in Selenium/WebDriver

Hello Everyone, 
            Today i will be blogging about THE most asked question about selenium/webdriver. That is, switching to popup window using web driver. I heard this question from many people, saw it as a question/explanation in many blogs. 
       I found it difficult while implementing Selenium in my company also. The situation is gets worse when there is more than 1 popup at a particular time and window names are same -:(. This is bad, isn't it?
         Ok let us see the solution now. CODE it DOWN!! Before that create a test scenario. You have a application, you login to the application, Home page shows up. Click on any link, it opens up a popup window,You have to do some operation in that window.

Below is the code to for the above scenario. Let me explain one by one.



See the second line of code, 
String sWinHndl=wd.getWindowHandle();

In the above line of code, we are fetching the current window handle. This you need to take for the home page in the above test scenario.

Why are we doing this?
Here goes the explanation, this is really required for you to understand. When you do have main window and popup window title same then there is only one thing left which is different i.e. Window Handle. a unique number generated for each and every window. We need to play with that id in the code.

Next line is for your test code to do some operation to open up the pop up window. Your pop up window is open now. Now there are 2 window handles currently present.
Explanation for next line of code is like -:  You already have X(sWinHndl) and now you have X & Y (lisOfWinds). Compare if it is not X then switch i.e. switch to Y.

This piece of code will only work if there are 2 windows opened at a particular time. But how do you handle it for more than 2 windows, for each window you open, do you want to keep the window handle?? Think and let me hear from you also. Trick is still in the window handles, see how you can use it effectively.

Please feel free to drop a comment if you found this information is helpful for you. If you have any comment/suggestion/issue with anything mentioned above, then also please share it with us.

Thanks!!

Related Posts

Related Posts...