Explore Courses Blog Tutorials Interview Questions
0 votes
in RPA by (5.3k points)

I am trying to create a UIPath project to automate filling out a simple form in Microsoft Dynamics Web Client 2016. I have been running into problems with strange behavior due to what I believe to be unreliable selectors. The Dynamics web client is written with Angular and seems to be a single page application. None of the inputs have any type of ID or specific data-attribute that UIPath can use as a selector as far as I can tell. It looks like the program is using the DOM tree to count the number of nested divs in order to assign each input with a "parentId" attribute. This seems to cause unreliable behavior when there are popup windows and I am worried that going forward with an automation with this particular web application will not be scalable.

Example of a selector:

<html title="Microsoft Dynamics GP" /> <webctrl parentid='a000000000000000056800083584c00030100000000f1550000000000' tag='INPUT' />

Where are this selector and parentId attribute coming from and will it be reliable and scalable through updates and form changes?

Example of selector

1 Answer

0 votes
by (9.5k points)

f the element itself can't be found reliably, just work around the issue by using an anchor on an element that can. For example, the input elements on can never be found reliably as their id changes every few minutes. So, if you need to type text into the field for "Company Name", we need to work with anchors - in our case there will always be a label with a distinctive text.

relative selector with anchor

You will need to use an Anchor Base along with a Find Element activity (plus the desired action). Here's the selector for the anchor - using the element's descriptive text:

<webctrl aaname='Company Name' tag='LABEL' />

Then, the Type Into activity just refers to an Input element:

<webctrl tag='INPUT' />

The only thing to keep in mind are multiple languages in which case you will need to either consider them in the selector, or select the element by id, if applicable.

Browse Categories