Question
UnitedHealthcare
US
Last activity: 6 Nov 2018 20:02 EST
How do you know when matching occurs?
Robotics 8.0.1081 included a new feature. During interrogation, the target icon now turns green when a page is rematching.
Is there a way I can check if rematching is occurring within my automations? Is there an IsMatching property or Matching event somewhere that I could use?
***Edited by Moderator Marissa to update categories***
-
Like (0)
-
Share this page Facebook Twitter LinkedIn Email Copying... Copied!
Accepted Solution
Pegasystems Inc.
US
Matching occurs from the inside out. The highest level control will attach first, but all of its children are matched and created before the highest level control is created. Some exceptions to that sequence are tables where content is displayed after the page is matched and dynamic content. You are safe in most cases to focus on the highest level control in the hierarchy.
Pegasystems Inc.
US
Hey Jarrett,
I do not believe that there is anything available to show this yet. I usually determine which is the last control that will be matching and wait for it to be created. Since I am initiating the action that causes the re-match this works fine. For event driven rematches, the event itself will indicate that matching is complete. How would you use it an event that informed you matching were occurring?
Jeff
UnitedHealthcare
US
I've been looking for a matching complete event, so I don't have to determine which control is the last to match.
If there was an IsMatching property, I'd probably create a function with a loop that continually checks if matching is occurring on a page or adapter. Then I'd set a timeout parameter. If no matching occurred within the last X milliseconds, I'd consider matching complete. I'd adjust the timeout per application.
Accepted Solution
Pegasystems Inc.
US
Matching occurs from the inside out. The highest level control will attach first, but all of its children are matched and created before the highest level control is created. Some exceptions to that sequence are tables where content is displayed after the page is matched and dynamic content. You are safe in most cases to focus on the highest level control in the hierarchy.
UnitedHealthcare
US
Does that apply to web page controls or only controls within a web page? I feel like I've checked IsCreated on a web page before but ran into problems where not all of controls in the page were matched yet. Maybe there was some lazy loading going on.
Also, does this same rule apply in Chrome/Firefox?
Pegasystems Inc.
US
This applies to all controls. With web there may be some matching that occurs after the page is matched when controls are dynamically generated after the initial page load.
The most obvious case for this is a html table. For an html table, always wait on the table to be created instead of the table section. The table section will be raise a created event for each row, while the table will match only once there is a table section. Occasionally, for slow loading tables you may need to wait until the number of table sections becomes stable.
One strategy that I employ often is to walk through the application in interrogation mode, then filter the log for just the created and destroyed events. The filtered log then shows me the life cycle of each control and the order that they will match. This makes it simple to determine what to wait on for each page.
Cigna
US
Jeff,
I have a question on matching of tables. We have a peculiar situation in the way the HTML table is being rendered.
The table has 10 rows and the content is rendering instantly as the page loads and all the controls are getting matched.
But, after few milliseconds, the table gets refreshed multiple times(content blinks for few seconds) and the automation flow goes forward without extracting any data from the table.
The WaitForCreate is getting instantly matched but the content is not extracted due to the HTML table refresh/blinking (Matched controls are not getting destroyed during the HTML Table blinking).
For now, we had to keep a pause for few seconds until the table is stable and then extract the data. Is there any way we can handle this scenario better ?