How to select specific element in Powerbuilder window using HP UFT - automated-tests

I am trying to record/automate an application developed in Sybase' Powerbuilder. I am currently using HP UFT v12.54.
Using the default recording process, the object spy is only seeing the area on my PB Window, not the specific field/dropdown. In short, I am unable to select a specific object in the window.
Please see the following image:
I am trying to select the Authorized Signatory field, but instead, UFT does not see the specific element, but the field area Customer Data instead. UFT just references the fields in the area by xy axis, not the specific object. Is this the default behaviour?
Additional info:
Application is developed in PowerBuilder v11.5
Any input would be appreciated.

if the first impediment is the modification of the application made in PB, then the next option would be to use a third application that supports applications made in PB. There is the TestComplete application that can do what you need. I leave you some information links.
http://testingbaires.com/testcomplete-automatizacion-de-testing/
https://smartbear.com/product/testcomplete/overview/
https://support.smartbear.com/testcomplete/docs/app-testing/desktop/power-builder/classic.html?q=powerbuilder#supported-powerbuilder-versions
I would personally modify the PB application by creating a module with the necessary battery of tests and running the study window with each and every case and applying an output report based on the needs, I understand that it would not be complicated.

The PowerBuilder's DataWindow control is a special custom-drawn control that cannot be accessed from outside of a PB application. It is internally managed and PB dynamically (re)uses the same windows edittext to get the input for one value at a time, while only drawing the rest of the data without using standard windows controls but a kind of canvas.
This is due to the initial portable design of PB (it used to be available for Solaris, MacOS and some other unices in the past) that implies a virtual machine like for Java (hence the pbvmxxx.dll for PB virtual machine).
I am afraid that from the outside, the only option to pilot a PB application would be to use sendkeys and mouse clicks, provided that the taborders are correct to access sequentially all the DW controls.

This is not the default behavior of UFT with power builder applications, you should either see a PBWindow Object or Proper Powerbuilder objects in the Object Spy.
According to the PAM, UFT 12.54 supports Powerbuilder 11.5+.
Below are the few things you can try
1) Make sure all of the latest patches are installed
2) Try to use record and run settings to open the power builder application. Once Record and run settings are set, click on record button and UFT will open the application. Then stop the recording, open object spy and check if its recognizing the objects after that.
3) Run UFT as admin. UFT needs the same privilege level as the application. So if you're application is running in higher privilege then UFT then UFT will not be able to recognize anything on the application.
If nothing works then you can open a ticket with HP, because powerbuilder 11.5 is supported by UFT 12.5.

Related

Run multiple test opening mutilple instances of windows application(VB .NET) using one UFT instance

Application Under test is developed using .net vb .
Clarification 1 :
is it possible to run multiple tests parellel using one instance of UFT in a one machine ?
Clarification 2 :
Can we open multiple instances of the windows application and run different tests on each instance of the the opened windows application in parellel .
This will not workout with windows application. Even the application is minimized the objects will not be able to identify with UFT until the window is activated. Both the criteria will not work as the objects are just like that identified by their properties not by creation time as we use it for browser. Only option is running multiple test cases in multiple machines
UFT doesn't support running tests in parallel. Note that UFT simulates users, each tests assumes it controls where the focus is (sometimes by taking control of the mouse and keyboard for typing). If multiple tests are trying to do this you may get unexpected results just like you would if you had two mice connected to your computer and two people tried to do different things at the same time.
Consider the following two tests:
Test A
Click username edit field
Type "hello"
Test B
Click password edit field
Type "world"
When run in parallel you may get:
Click password edit field
Click username edit field
Type "hello"
Type "world"

RadEditor ExportToPDF not generating PDF in client's environment

We are using the Telerik RadEditor control, specifically for it's ability to render a PDF via the ExportToPDF() method on the control. We find that this works great in our development and test environments but fails as soon as we get to our client's environment. What I mean by fails is that typically when you execute the ExportToPDF() method, a dialog box pops up with the name of the PDF file, it's size, and whether you want to open it or save it. In our client's environment that dialog window appears, but the file size does not appear. If you save the file, it's a blank document. The machines / environments are equal in their setup (IIS 6 on Windows server 2003). The only exception is that our client's machine is in a secure environment with no access to the internet.
We are loading form letters into the control and then creating the PDF once the user clicks a button, so I don't think this is being caused by bad data / invalid characters causing the PDF not to generate.
My questions are: does anyone have experience running the ExportToPDF() command in an environment with no access to the internet? Could this be a permissions issue? I can't seem to find documentation on whether the ExportToPDF() functionality uses a temporary directory to write the PDF out to while it's rendering. It may be as simple as that, but I'm having a hard time researching this issue.
I've also put a try / catch block around the ExportToPDF() method and I know it's not throwing any errors.
We are running an older version of RadEditor - 2009.3.1208 - it runs in a large application with other Telerik tools so upgrading the entire RadControl suite is not trivial (b/c of testing, etc) and is taking some time.
Any suggestions on what to try next / has anyone encountered anything like this with this control?
Thanks for your help in advance!
Richard
I doubt that the export functionality needs an active internet connection. Most likely something in your secured environment is blocking silently the export and it does not simply happen. My recommendation is to check the permissions/processes you have on the user machine and test the same outside of the local environment to compare the results.

open air application by window hotkeys

I am developing flex air application.I have to implement hot-key functionality in air application.
For example whenever user press any two keys like ctr and S keys the open flex air application.
and whenever user press any two keys like ctr and q keys then close flex air application.
Is it possible in flex?
Thanks
It's not possible for a not-running program to intercept key commands. As such you cannot tell the application to start on some key command; either the program needs to run already, or you need to set that key command to the OS (you can do that in Windows in the properties panel for example).
The other command is rather easy, just listen for KeyDown events and check if your combination was pressed; and if so, quit the application.
Not to my knowledge.
For this kind of functionality you need a daemon or a background process. Because in AIR it's not possible to listen for keys when not focused (alias key logger) it would have to be a native application (different versions for different OS).
An alternative would be to somehow set a key stroke in the OS configuration - but then again, this is very different on different OS, and it is not supported by AIR - a native process would be required, too.
If you want to make this simple, it's not possible, unless you really want to invest a lot of time to write these processes, one for each different OS.

Send data to Com port from a web page

I'm new to web development so please, could you help me to understand if I'm working in the right direction?
There will be a webpage intended for our customers (not intranet) from where they can print labels. Some of the larger customers will have special label printers where configuration and printing using COM-port is the only acceptable option. Basically we have very limited knowledge and control over their environment.
The web-page itself will be a pretty simple html-page or more complex AJAX.
After the customer inputs all the data and happens to chose this type of printing we have following tasks:
1) get data about the printers on the customer's system installed to a comport and if possible get printer settings (like paper size and orientation). Ideally would like to be able to adjust the settings, but if it is a pain can just put into requirements that your printer must be installed to COM1 and configured correctly.
2) send commands and read answers and send PCL code to the selected com port
As I understand I'll need to install something on the customer's machine to be able to talk to com port and get any settings. Just HTML+Javascript are not capable of doing that. Right?
I found RXTX library which seems to communicate to com port on most platforms. Can it be called from JavaScript or I still need to do a Java plugin? Are there technologies other than Java plugin that would solve the task?
The web-page will be used in different environment - platforms and web-browsers. We would like to minimize the number of customized solutions. Will Java allow us to do the same plugin for all environments with minimal customization?
If we require the user to install a plugin will the user be prompted with our credentials to confirm the installation? Will our web-site require higher trust settings?
Thanks for you help!
Well, I've had to do this in the past. Here is what I did and the circumstances
1) I knew that our customers were in a windows environment so I wrote win32 software to handle the printing.
2) I created a file format to be read by the win32 software that allowed me to specify print parameters and the label data. XML works ok for things like this.
3) My web app created a file in the format used by the win32 software and returned it to the user when they clicked on the "Print Labels" button. The file extension on the file returned was registered by the installer of the win32 software. That means when their browser looked for a default app handler for that file, it found my win32 software.
Bottom line is that the browser is handing off the printer communications to a native application instead of talking directly to the printer.
Obviously you need to be able to dictate your end user's are using a windows machine (or mac or whatever you can write native code). Associating a file extension with my program and returning that file to the user was the key to making the process work for me.
Whether your native code sends pcl directly to the printer or translates into a print api (like the win32 api as mine does) is another consideration.
Another approach you could consider is instead of sending PCL codes, you could create a PDF of the document. Format the document to the size and orientation of the label printer. The user will still have to hit the print button, but that might work. I have done this for printing to bar code printers and it works fine. Sometimes getting the margin and orientation correct is a little tricky, but that can be figured out.

Silverlight Multiple Application Debugging

I have three Silverlight 3 applications in the same solution. In my asp.net hosting project I have a seperate page for all three projects. When I navigate between the pages, the only Silverlight breakpoints that get hit are the ones the initial page I load.
This problem has only started recently. I used to be able to debug between all silverlight projects at the same time. Any ideas? I have deleted the ClientBin folder, I have deleted all files and re-retrieved from source control. Nothing seems to be working.
"The problem has only started recently". What changed? Here are some guesses:-
You upgraded to Windows 7
You installed some more memory
Some other memory guzzling app is no longer running when you are testing.
By default IE8 will run multiple processes at least 2. One for the browser frame and one for the content of the intial tab. As you open more windows and tabs IE may add new processes to the set it is currently using.
When you debug VS will launch an new IE8 session and will attach to the process handling the content of the single tab that is open, (it doesn't bother attaching to the parent frame process). However as you navigate about your application IE8 will start new process that VS won't be attached to. This forces you to open the Attach to Process dialog and do it manually.
You can control this IE8 feature (called BTW LCIE, Loosely Coupled IE) from the Registry.
In the Key HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main add a new DWORD value TabProcGrowth. Set its value to 1. Now IE8 will only ever create 2 processes per session one for the frame and one for all the tab and window contents which is the one the VS will attach to.
This perhaps is a bit draconian if you also use IE8 as your general browser. One option is to leave IE8 for test purposes and use another browser for general browsing. Another option is a variation of the above. Instead of creating TabProcGrowth as a DWORD create it as a string type instead and set is value to "small". In this mode IE8 is much less aggressive in the number of processes it will open. Of course you could create a couple of scripts to create and delete the registry entry.
Note without the registry entry IE8 uses its own hueristics that depends on available memory etc to determine if a new process is warrented or not. This might explain why in the past your debugging worked and that for apparently no reason it stopped working.
Here was the issue:
One of my child windows had a Silverlight that calling a .Net Ria Service. The service call ended in an error.
The next time several I debugged, the debugger did not attach to the child windows. I had to attach to the child windows manually.
I fixed the Ria Service call so that it did not end in an error. And had to manually attach to the child windows in that debugging session. However in subsequent debugging sessions, the debugger automatically attached.
I tried breaking the Ria Service call and I had to manually attache again. What is a little weird is that closing Visual Studio and even rebooting the machine does not make Visual Studio automatically attach again. You have to have a debugging session where the child window make a sucessful call to a Ria Service to fix it.
NOTE:
The RIA error that was breaking my debugger was caused by a misspelled include in the domain query (ie...
return Context.SOME_ENTITY.Include("Misspelled_Association_Property");
) not all RIA exceptions cause this problem.
My scenario has a number of specific cases that I will go over. I don't have all the things handy to test a more general scenario, but I will when I finish my project unless someone does this first.
Here is what I have:
I am using the a LinqToEntitiesDomainService from the July 2009 Preview release of .Net RIA Services.
To complicate things a little more, since my application is using an Oracle backend, I am using DevArt's dotConnect Entities provider as the EntityFramework model for my domain service.
When I get time, I will try this on the Nov 2009 RIA and a standard SQL backend and EF to see if I still have the same issue. If this is the case I will report it to Microsoft as a visual studio bug.

Resources