cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
afmc2238
Helper I
Helper I

Dynamic UI Element Selection

I am currently creating a flow to upload copies of checks under the applicable profile on the web.  I have been able to get this to work to upload a document to the attachments section, but I want it to upload to a specific folder within the attachments section. 

 

For example, I want each check uploaded to the "Checks Issued" folder under each profile.  The folders can be in any order, so the UI element selector needs to grab the folder based on naming alone.  I have tried this numerous different ways, but it continues to fail. After looking at the selector builder, it appears that each folder created under the profiles has a specific ID.  The flow fails when it tries to find the "Checks Issued" folder under a different profile because it has a different ID.  I've tried removing the ID but that doesn't work (which makes sense that it would not work).  Is there a way I can modify the Selector Builder to capture any folder based SOLELY on the name of "Checks Issued", regardless of ID?

2021-07-26_12h04_57.png2021-07-26_12h04_43.png

 

14 REPLIES 14
afmc2238
Helper I
Helper I

Upon further testing it looks like PDA is not even registering the "Checks Issued" link as an element, even though it looks like it is picking it up with the UI selector.  When I select the "Checks Issued" link as the element to be selected and use that as input for the action "Get details of element on web page" I get this error every time:

 

Element not found.: Robin.Core.ActionException: Failed to retrieve attribute 'Source Link' of UI element on web page. ---> System.Exception: Element not found.
   at Robin.Modules.WebAutomation.Actions.WebAutomationActions.GetDetailsOfElementOnWebPage(Variant webBrowserInstance, Variant cssSelectorForElement, Variant humanFriendlyAttributeName, Variant& attributeValue)
   --- End of inner exception stack trace ---
   at Robin.Modules.WebAutomation.Actions.GetDetailsOfElement.Execute(ActionContext context)
   at Robin.Runtime.Engine.ActionRunner.RunAction(String action, Dictionary`2 inputArguments, Dictionary`2 outputArguments, IActionStatement statement)

 


2021-07-26_14h20_24.png

afmc2238
Helper I
Helper I

This is what I need from the table of folders -> but ID needs to be dynamic.

afmc2238_1-1627326044522.png

 

geavgous
Microsoft
Microsoft

Hi afmc2238!

 

It's great seeing users getting deeper into Power Automate Desktop! As I can understand, you are facing a frequent scenario where you will have to properly construct your selectors.

And by properly, I mean going into full manual mode 🙂 . 

When we deal with dynamic pages, selectors tend to change by each refresh or new visit. So editing your selectors may require some more advanced knowledge of CSS. Well, I can't provide any help in how to write advnaced CSS, because that's entirely up to your needs. But what I can do, is to let you know about a feature that Power Automate Desktop has, which is to allow users to re-capture the same element multiple times and be able to compare them and see where the selectors change.

You can then update the selector manually and see how it works out! 

geavgous_0-1627326812218.png

In the screenshot above, I have captured an element from a date picker, and this is where you will find the functionality of recapturing the element.

 

Let me know how that worked out for you!

 

Thanks,

George

Thank you for sharing with my about that tool! It was helpful to confirm what I mentioned above - that the Id of the folder is what needs to be dynamic.  How can I use a variable here rather than hard code the ID?  Like I mentioned above, I want the selector to grab the folder based on the title of "Checks Issued", regardless of ID.

2021-07-26_15h34_19.png

MichaelAnnis
Super User
Super User

Click text on screen using OCR would be my best guess.  Then you can separate the text by your filename, or use a Switch->Case scenario to define the folder by the text in the filename.  OCR is very touchy, but there are several other posts about how to use OCR efficiently, including the zoom feature to get a more accurate reading.

 

If you are willing to hardcode all cases by which you could ID all the folders, you could use a Switch->Case to identify the Id=%folderID% by the text in the filename.

Both options are fairly convoluted.  With the second option, as the Employee @geavgous stated, manually attempt this a few times and make sure the ID= is the exact same code for the folder every time before attempting this option.

Best of luck.

Hi @afmc2238 

 

From what I could understand, the folder name is always the same, is that so?

In that case, you could customize your selector to:

a:contains(Checks Issued)

For example:

tkuehara_1-1627516696052.png

 

Thank you! This was something I had tried but it had not worked for this scenario.  However, I had been trying to execute this flow using Chrome.  When I tried the same thing with Edge it appears to work and does not get hung up on folderID.  It automatically seeks out the folder based on name alone. Any idea why there is such a difference between using Chrome vs Edge?

That's interesting. Might be worthy checking if Chrome extension is installed and enabled. In theory it shouldn't have difference if both navigators have the extensions enabled.

Oh it is definitely installed. None of the other steps would work otherwise. 

afmc2238
Helper I
Helper I

After more work on this, it appears to be unsolvable. Whether I use Edge, Chrome, the UI selector, or record mode, this does not work consistently. PDA fails to grab the right folder. 

geavgous
Microsoft
Microsoft

Hi there

 

In the first ever post with the screenshot, please select also the checkbox called "Title" and find and remove the checkbox containg the ID. Then, go to the title that you have selected and put there the name you like either using "Contains" or "Equals" etc. 

Thanks, 

George

Hi - thanks for the suggestion!  I have tried this combination with many others and I get either errors OR the document uploads to the general library rather than going into the specific folder and uploading. If I deselect<tr> entirely, the document uploads to the general library.

2021-08-03_11h44_34.png2021-08-03_11h45_29.png2021-08-03_11h51_45.png2021-08-03_11h53_07.png

 

@geavgous  Hi, George,

Thanks for introducing the way to edit (or add) sector. Just want to learn more about that. I have 2 questions:

(1) The only way to add an element for web page is to by web recorder. I have figured out that Power Automate uses the tag sequence to identify web elements such as "html > body > table > tbody > tr:eq(2) > td > table > tbody > tr > td:eq(2) > table > tbody > tr", so I want to create the element by myself.  how can I create a new element without recording it? You see, I have quite a lot fields on the page and I can get information by browser development tool to edit the sector.

(2) When choose "Add element" in an action, even it is a web action, Power Automation Desktop will record it as UI element, which results that actually it can't be used by the web actions. Is there any way to fix this issue? I tried to change the sector, but found I can't.

 

Thanks a lot for your help!

 

@afmc2238  Hi, you may set a variable and use it in the sector as the demo below. I ever used this solution in web automation elements, it works. (There are several drop down choice items, so I used a number variable in the element to make it dynamic), UI elements should be the same, you can have a try. 

WaleyWang_0-1628244635584.png

 

 

Helpful resources

Announcements
Power Automate News & Announcements

Power Automate News & Announcements

Keep up to date with current events and community announcements in the Power Automate community.

Power Automate Community Blog

Power Automate Community Blog

Check out the latest Community Blog from the community!

Top Solution Authors
Top Kudoed Authors
Users online (3,167)