Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 months ago.
Improve this question
So, I'm a new(ish) QA automation intern at my company. Since I got in, I've been researching different tools and methods of automation. We have a web service that we can automate just fine. The thing is, there is also a windows application that needs to be automated for QA as well. I've looked into a framework called Winium. However, in order to select specific elements, you need to use some sort of selector and the application doesn't show up with any way to get selectors. I used the Microsoft application "Inspect.exe" but the app came up with nothing even though inspect worked on other apps.
Is there some app or framework that can help me? Or, am I just doing it wrong? Thanks in advance for any answers!
To automate desktop applications there are a few great choices available as follows:
UiPath Studio software solution allows automating repetitive office tasks.
WinAppDriver is a service to support Selenium-like UI Test Automation on Windows Applications. This service supports testing Universal Windows Platform (UWP), Windows Forms (WinForms), Windows Presentation Foundation (WPF), and Classic Windows (Win32) apps on Windows 10 PCs.
AutoIT is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting. It uses a combination of simulated keystrokes, mouse movement and window/control manipulation in order to automate tasks in a way not possible or reliable with other languages (e.g. VBScript and SendKeys). AutoIt is also very small, self-contained and will run on all versions of Windows out-of-the-box with no annoying “runtimes” required.
Winium is an automation framework for Windows platforms. It is opensource and is Selenium-based.
TestStack.White is a framework for automating rich client applications based on Win32, WinForms, WPF, Silverlight and SWT (Java) platforms. It is .NET based and does not require the use of any proprietary scripting languages. Tests/automation programs using White can be written with whatever .NET language, IDE and tools you are already using. White provides a consistent object-oriented API, hiding the complexity of Microsoft's UIAutomation library (on which White is based) and windows messages.
LDTP (Linux Desktop Testing Project) is a Cross Platform GUI Test Automation tool.
SikuliX automates anything you see on the screen of your desktop computer running Windows, Mac or some Linux/Unix.
Pywinauto is a GUI automation library written in pure Python and well developed for Windows GUI. At its simplest it allows you to send mouse and keyboard actions to dialogs and controls on both Windows and Linux, while more complex text-based actions are supported on Windows only so far
Robot Class / Win.form Class: These tools are distinctively different than the rest, in the way that they aren’t directly destined as test automation tools for desktop applications, but act as classes to simulate activities of the keyboard and mouse. Whereas, the Robot Class could be used with Java and Win.form is for .Net.
You can find some relevant discussions in:
Does Selenium Support automate to Desktop Applications
How to execute a workflow on a PC which doesn't have the UiPath Studio or UiPath Robot installed?
How to read an excel sheet and put the cell value within different text fields through UiPath?
You can go look into WinAppDriver (Link) It supports good amount of APIs that you can use (API)
If you are comfortable with C# then WinAppDriver is a good option.
You can also think about using PyWinAuto (Link) if you are more into Python.
As you mention, finding window elements based on any unique attribute is challenging when it comes to Desktop Automation. However, you can check THESE tools to inspect desktop elements.
Related
QTP seems robust and integrated withother systems.Funcunit/Selenium seem easier/quicker to setup and run for developers. Is it either-or, or is each tool betterat differentaspects of programming?
Anyone had experience with using both on a project and how?
The main advantage that QTP has vs Selenium is that QTP supports automation against non-browser-based applications. Selenium only tests web apps hosted in a browser.
Technology-wise, they can coexist, but I am not sure why you would want to. If you are a shop that only has web apps, then you could use either. If you are a shop that also needs to support desktop apps, then you should use QTP (or another vendor tool that supports both, like IBM RFT or MSFT VS2010).
In my opinion, you would never want to use both (i.e. QTP for desktop, Selenium for web), as you then need to support expertise in 2 toolsets.
Recently I was asked by someone if there is such a magic framework that will allow one let's say to design and build once a single library of controls and then use them separately to build web and desktop applications.
Does Google, Microsoft or other company have such a RAD framework and tools?
Thx
Depends on how you define a Web App. If you consider RIAs to be Web Apps, then yes...
Microsoft has Silverlight and Adobe has Flex/AIR.
Well, you can always go and look for adobe flex, adobe flash or even microsoft silverlight, which in the next version will support desktop applications as well.
Other types of frameworks currently do not build so well under desktop/web environments.. Take .NET for example, which can be used in so many set of environments, but there are limitations if you want to use it for mobile, web, desktop or XNA, everyone has his own set of tools.
That is mostly resumed in the capability of the desired environment, since you can browse a web page in an iphone, which does not have the same capabilities of a desktop or even laptop PC.
Seva is telling you how this is normally dealt with. MVC is a good start.
The Eclipse foundation offers Rich Client Platform vs Rich Ajax Platform - one allows you to build desktop apps, the other web-based apps, all using SWT concepts. I wouldn't describe it as magical though - the reality is it is much more difficult and I would not recommend RAP.
Adobe has AIR, and Google wants everybody write HTML5+JavaScript. both Chrome and FireFox can run those as standalone apps.
Were such thing to exist, it would produce lousy desktop apps and lousy Web apps. The underlying platforms and ideologies are too different. You'll do better by isolating as much of business logic away as possible, then building two separate clients.
EDIT: assuming that by a "Web app" you mean an HTML-based app, as opposed to something that happens to execute within a browser. For the latter option, you can have Flash, Silverlight, Java Applets, ActiveX controls... And for the vice versa, you can have a desktop app that opens a Web browser control and runs a Web app in it. :)
Microsoft has a Smart Client Factory that has a lot of built-in guidance packages that make development fairly quick and standardized.
http://msdn.microsoft.com/en-us/library/aa480482.aspx
It is entirely possible that I misunderstand this question, but if all you need, is the ability to seperate models an business logic into some kind of reusable library, just about any programming platform/language will do.
Java: keep models and business logic in seperate project, compiled to jar
.NET: keep models and business logic in seperate project, compiled to DLL
Python, Ruby, Perl: keep models and business logic in separate directory, and include as module
What are the requirements for the desktop application? On which platforms should it run? If Windows only, .NET seems like an obvious choice, otherwise Python and Qt or Java if you like to Swing.
I also would go for a Webservice and implement as much Business-Logic as possible in the Service. You can then build a very small Clinet in Html/JS, Java, .Net or Whatever.
You should choose that Framework you feel most familiar with.
If you are a .Net-Developer you can develop a WCF-Service (is also great with WP7).
For Java, i would choose Google-App-Engine or the Play-Framework.
And of course you can make a PHP-Webservice, for examble with the Flow-Framework
Check CrossUI RAD tool. It enables developers to rapidly develop and package the exactly same code and UI into Web Apps, Native Desktop Apps(Windows, OS X, Linux and UNIX) as well as Mobile Apps.
I tried to automate an application available under Citrixl Program Neightbourhood using QTP 9.5, but QTP does not identify the objects inside the application. Can we automate citrix application using QTP?
What are different tools available to perform automation testing on Citrix applications?
I have used Scapa Technologies for Citrix ICA or Terminal Services testing. Scapa provides an automation tool that is installed on the Citrix server. Then it has a controller that launches the citrix session, communicates with the server and starts the automation tool which calls your automation script. It actually runs on the server so it can interact with the applications controls.
QTP supports Citrix only if it is installed on the Citrix machine, it doesn't support working via the client.
For technical reasons this is because QTP needs to be able to listen to windows messages and load its DLL's into some applications which it cannot do from a different machine.
Traditional tools generally do not work with applications running in remote desktop applications. The interfaces needed aren't available. Probably your only option is an image-based tool like Eggplant.
The difficulty with Citrix automation is that the applications are streamlined to the client computer as an image, thus you can not access to the UI tree of elements.
UiPath can automate very easy Citrix applications (also desktop or web) by using some image automation specific techniques like
clicking relative to an image
using OCR for text scraping
using keyboard hotkeys
click relative to a OCRed text
Here's a full tutorial showing different Citrix (or virtual desktops) automation techniques for
data entry
OCR data scraping
clicking and typing relative to an image or text
UiPath has an SDK that can be used from code.
The default will be to create visual automation (workflows) directly from UiPath Studio.
Note: I work at UiPath. You should also try other visual automation tools like Automation Anywhere, WinAutomation, QTP, Selenium, etc, use them side by side and choose the one that suits better your needs.
For what it's worth, I have automated a CITRIX application just as you described for a large telecommunications firm in the early 2000s. I did this by getting deep inside the Windows SendMessage APIs and an optical character recognition package. You would probably be astonished by how much data was moved from one system into another using my team's CITRIX/screen-scraping "robots." I came upon this question because I was reminiscing about this project and wondering if there was still a need for this type of solution in this day and age.
As Motti said You can't automate via Citrix client. In general Citrix client is hard to automate. I know that someone at my work played with it and he managed to catch some communication and objects that could be useful to automate tests via Citrix, but that would be separate development project to create such solution that could be very limited.
Via citrix QTP object recognition is totaaly different. QTP on remote machines works on objects based on location and reference so it is almost impossible to automate.
As per my experience this type of setup can be best handled using the Image recognition and/or OCR capable testing tools like eggplant but its not really suggested to have testing environment which includes Citrix. Another option could be to install an automation tool like AutoIT within the Citrix machine and trigger the scripts using the other tool (maybe Selenium but I am yet to try that out).
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
I would like to be able to use a tool like WatiN to automate somethings that needs to interact with a Web App that is access by using an instance of IE running on Citrix. So far it seems impossible to interact with the window at even a rudimentary level using SendKeys as the internal UI components seemingly do not have a handle.
Has anyone been able to do this or anything similar?
You can try UiPath in order to handle Citrix automation (and also desktop or web).
Here's a full tutorial showing different Citrix automation techniques for data entry, data scraping or clicking and typing in virtual desktop environments.
You can use it from code (SDK) or create visual automation (workflow) directly from UiPath Studio.
Take into account that Citrix/virtual desktops are streamed to the client computer as an image so you can't have access to the UI tree elements.
Note: I work at UiPath so I know it can do the job. You should also try other visual automation tools like Automation Anywhere, WinAutomation, Jacada, use them side by side and choose the one that suits you the best.
Citrix has a test/monitoring tool that supports automating Citrix apps. I believe it is called Edge Sight. Another option is Tevron CitraTest.
However, if it is a web app that you are trying to automate, why don't you just automate IE directly on your own workstation. There are numerous automation tools, both free and fee, that support automating IE.
I haven't heard about Citra Test only about EdgeSite. Anyway it's troublesome to deal with closed Citrix environment.
First of all no automation software or scripting environment can easily interact with objects of Citrix applications. There are simply no hooks available. IE accessed via Citrix is more like Image than application.
You can get some interactions when listening on low level of communication, but that is almost like reverse-engineer citrix propetiary technology and injecting your data.
You could try with software that recognizes images and operates on screen coordinates, but that sucks. It is prone to many, many errors. Additionally don't even dare to use it with Citrix and dual/multiple screen setup. That's just mess.
Installation of automation software on server and have it accessed via Citrix as your IE would be best solution (except having tested app accessed normally via your workstation IE).
Unfortunately in most cases App accessed only via Citrix means no testing automation :/
I recently saw a demo of Macro Scheduler. It seems promising but I haven't used it. Here is the link. http://www.youtube.com/watch?gl=US&v=HBok9MXX4Yg
Another option is try installing Quick Test Pro or any other UI automation tool on the citrix server that you are accessing. QTP works in this setup. Its not easy but its doable.
I have used AutoIT to run in parallel with a desktop app in Citrix to monitor and close long running dialog boxes.
Is anyone out there aware of any good or even reasonable tools for automated testing on the Windows CE / mobile platforms. Potential tools that I am aware of include TestQuest, Countdown, SOTI pocket controller, and Eggplant. Are there any more that I have missed?
Alternatively, is anyone aware of a VNC or remote display tool for Windows mobile that replicates the Windows visual object hierarchy on the PC, rather than displaying the entire device as a single bitmap? If this could be done, mainstream desktop automation tools could be applied to Windows mobile.
N.B. I have already read this related question which is useful, but am looking for a viable off the shelf alternative. This post is following up on a number of related posts in the PDA/Embedded section of SQAforums.
I realize that your question is directly "are there tools to do the automated testing on CE", but have you considered perhaps aiming your automation at a version of the app which can be accessed from a standard desktop environment? In this way, you are open to all of the standard automation tools.
For example, I have worked on a few projects where we needed to perform automated testing for the device. In all cases, the RF device was really just a web browser connecting to a web based app. The same URL and simple forms could be plugged into a standard desktop browser and be automated by any of the usual automation toolsets. Automation never replaces manual testing, so what we did on those projects was automate regression testing of the same web interface that was used by the RF devices, but still do some sanity manual testing directly on the devices.
Also, with regards to the VNC/bitmap issue, I've been down that road before and agree that it is a nightmare. Using standard desktop UI automation on a VNC bitmap is not only unreliable and unmaintainable, but slow - in most tools, the CPU churns away searching the entire bitmap from top left to bottom right for the desired image. Really really slow.
Check Hopper, a test tool for Windows Mobile.