
Announcements
I'm automating a Citrix-hosted application using Power Automate Desktop (PAD) across two virtual machines and running into selector instability.
My Setup:
VM A: Where I design and orchestrate desktop flows
VM B: Runs the Citrix application (hosted app I want to automate)
Power Automate Agent for virtual machines is installed and connected on VM B
Since Citrix doesn't expose UI elements directly, I'm using image-based and keyboard automation in the PAD flow triggered on VM B
Issue:
Every time I run the flow, I get:
"Couldn't test the selector, the parent screen was not found."
This happens even when interacting with File Explorer, Downloads window, or standard Windows dialogs
It only works if I re-capture selectors every time, which isn’t reliable
Also facing issues launching browsers in VM B for any post-processing
Selectors break even with minor changes in screen resolution or window state
What I’ve Tried:
Set fixed resolution and scaling in VM B
Added delays, image-based clicks, and keyboard shortcuts
PAD agent is installed correctly and machine is connected
Looking For:
A stable method to automate Citrix applications using PAD and PAD Agent
Best practices for image/keyboard automation within Citrix windows
Ways to avoid constant re-capturing of selectors or prevent breakage
Alternatives or enhancements that could improve reliability of this setup
You're facing a common challenge when automating Citrix-hosted applications using Power Automate Desktop (PAD) — selector instability and resolution sensitivity. Here's a comprehensive guide to help stabilize your automation and improve reliability:
Citrix applications render UI elements as bitmaps, not native Windows controls. This means:
If launching browsers fails on VM B:
Start-Process "C:\Program Files\Google\Chrome\Application\chrome.exe" "https://your-url.com"
Use PAD’s “Run application” action with full path and arguments.
If you have control over the Citrix environment, consider using the Citrix Virtual Channel SDK to expose more automation-friendly interfaces.
Split the flow: