Desktop application pop-up handling with selenium webdriver - java

I am automating a web application using selenium webdriver and java in which after hitting login button a desktop application is launched and the control is no more associated with the webdriver. When the application is launched, the whole desktop screen goes into background and the dialog box comes in front. I need to access that dialog box to enter pin.
I have tried using robot class, AutoIT and AUT but not able to access that dialog to enter pin.
Sorry... i dont have enough reputation to load image.
please help.

You might be getting modal window:-
You can navigate to it and send pin using driver.switchTo().alert().sendkeys("<pin>");

Related

How can Take permission using an alert Box at just destroy the application in Android

I just want to show an alert box at just killing the application in android.
It's like a Notepad application, if we simply kill the app (on clicking the close button) then we get an alert box asking for save changes.
I just want to add same thing in my application.I have tried onBackPressed() and its working fine on clicking on Back Button. But I need same thing on closing the application.
There is now way to be sure if the app is being closed but you can place a check if the application is in foreground or not which is a better metric IMHO as this tells you when the user moved away from your application.
To check the ProcessLifeCycleOwner this will help you find state of process. You can check this Github sample or this stackoverflow question in how to use it.

Accessing Windows dialog boxes from Selenium and java

I am testing web site functionality with Selenium using Java from Eclipse. One test is to click a "download" button, look for a popup window (this is another selenium window), respond to that window which should then cause a Windows download dialog to pop up (please see attached image).
Please note. I do not have to actually download the file. Just verify that the windows dialog popped up.
I know from experience (or at least am unaware) that Selenium can actually access the Windows download box, choose a file location and start the download. But all I need to do is verify that the download box popped up. Exiting the chromedriver will kill the download window so it won't linger but I still need to verify it was created.
Any suggestions? One thing I tried was having the task manager open. I thought I could find a process corresponding to the dialog box, but there were 119 processes before the dialog box came up as well as when it was up. So any suggestions what to do?
I could add as an aside that someone wrote a workaround to actually download the file. Instead of clicking on a button or link he pretended to be the Windows dialog box and accepted the download. That, for reasons I stated above, will not work in this instance as I have to verify the actual results of clicking the button.
Please see my attached image for an example of the dialog box.
One workaround to meet this test requirement is, once you responds to the window which results in a Windows download dialog, try performing the next action. This will result in a WebDriverException as the access to UI will be blocked by the Windows dialog. You can then catch this WebDriverException and in the catch block press escape key using Robot class in Java. Following is an example:
try {
//1) Respond to the window that results in Windows dialog box.
//2) Perform the next action on UI.
} catch (WebDriverException we) {
//3) You can capture screen shot as well at this stage.
System.out.println("Most likely Windows dialog appeared.");
//4) Press escape key using Robot class in Java
Robot r = new Robot();
r.keyPress(KeyEvent.VK_ESCAPE);
}
You can use AutoIT to check if the windows dialog appears, then save the status of the windows dialog in somewhere(eg. a temp file), then you read the status of the windows dialog using Java from Eclipse

open and monitor window running flash app without browser

My goal is to open a new window running a flash app from an url (http://curvefever.com/CF_Preloader.swf), and be able to interact with it with java, and do things like take screenshots of the content, and invoke keypresses.
while I could achieve this by opening the flash app in a browser and monitor the browser with selenium (and using an awt robot to take screenshots), I am looking for a better method because I want to avoid the extra lag brought with running the browser, but also because other windows might obstruct the screenshots when the browser window is in the background.
I think Selenium is still a good choice for manipulating the Flash application.
You can use the WebDriver's built in screenshot ability, which only captures the browser, so you won't have to worry about other windows obstructing the one you want to capture.
Take a screenshot with Selenium WebDriver

How do I handle a Windows Authentication using Selenium

I am attempting to automate a process using selenium with Java.
I am trying to navigate to a URL, which the test does do. A screen pops out over the top of Firefox asking for a user name and password. When this screen pops out, firebug stops working and I cannot get any information about this screen.
How do I handle a modal dialogue with Selenium, when I cannot find anything about it?
I guess, that you are trying to get to HTTP Authentification protected page. Try getting here like this:
driver.get("http://username:password#your-site.com");
Where driver is assumed as healthy and living instance of WebDriver
This actually did not work, the dialog still displays. Instead of running the tests in Firefox as I had wanted I ran them in IE which was using NTLM so I didn't need to input my information.

Window Dialogs & Popup handling in Java or Javascript

I need to manipulate Popups & Download Dialogs of IE browser using either Java or
Javascript based automated solution.
I tried with selenium2 but its not working properly so any other suggestion for the same.
Actually selenium2 does not provide proper handling of alert/download dialogs so
I am thinking to use some other javascript/java solution.
With Download Dialog: I need to save the downloaded file to particular location.
With Alerts Dialogs: I need to check the displayed message and click on the particular button.
Any suggestion is appreciated.
Thanks.
I use selenium 1 and it works well to handle popups in my application.
//Click on browse file button, open a popup
selenium.click("//input[#value='Browse...']");
//waiting for popup to load
selenium.waitForPopUp("_Dialog", "30000");
//selecting the popup by passing window name
selenium.selectWindow("name=_Dialog");
//click a link inside pop up window
selenium.click("link=something");
//Put other popup operations here
//click cancel button for pop up
selenium.click("cancel");
//back to main window
selenium.selectwindow("null")
To get the message from alert boxes, use selenium.getAlert();. This will return the message contained in the alert box as String.
Also, sometime you will need to check, whether alert has occurred before switching to it.
int noofWindows = selenium.getAllWindowNames().length;
if (noofWindows > 1){
//selects the second window
selenium.selectWindow(selenium.getAllWindowIds()[2]);
//Prints the message in the alert window
System.out.println(selenium.getAlert());
}
If it is not a necessity to run test in IE, use firefox(*chrome) and close all other windows before executing the code.
I hope this helps you.
*All the mentioned code is for handling JavaScript pop-ups. I'm not sure whether this will work for Vb-script or not.
EDIT
I think IE download pop up is a windows event so cannot be handled by selenium directly, for this you'll have to use Java AWT or AutoIT.
AutoIT script should be something similiar to
WinWaitActive(windowTitle)
ControlClick(windowTitle,"",buttonName)
and save it as IEsave.exe. NOTE: I'haven't tried this AutoIT script.
now you have execute IEsave.exe from your program. I'm using java here.
java.lang.Runtime.getRuntime().exec("c:/IEsave.exe");
This will execute the file which in-turn will handle the save button event for windows.
You can create similar exe files for handling other window's events.
Hope this solves your problem.

Categories