I am trying to select a checkbox on a data row based off a receipt number (as per attachment). There can be multiple receipt lines to choose from and I only want to pick the one for my receipt number I have predetermined.
I can see that there is for each row functionality for Excel for instance but I’m wondering if there is similar functionality that can be applied in my case within a finance system?
Hi @JeffNZ,
Based on your attachment I see it is application you are working with. Unfortunately For Each Row activity is working only for excel data. Anyway there are for sure other methods by which you could achieve it. It depends if application is “readable” for UiPath Studio (UiElements). If yes then you could easily grab the data and keep them in variable. Then grab the checkbox elements to see if there is any attribute with use of which you could navigate between checkboxes. Finally set For Each loop which could go through every element taken to variable and with use of dynamic selectors would mark each checkbox.
If application is not properly seen to Studio then there are possibility to work with it using image based activities. There are plenty ways to achieve it.
How do you test if an application is readible? I had a guess at it and attached a document. I noticed the data scraping activity had a table icon so I gave that a go but I have no idea how to get the data presented in a row by row basis.
I understand how to screen scrape a value within a cell, but I don’t understand how do structure it in a way to get UiPath to process each available receipt row from the first line onwards.
Is there any examples you can share? I have been trawling through YouTube content and haven’t had any luck so far.
Again any assistance would be greatly appreciated.
By “readable” I meant that if you will for example use Click activity on application it will let you take the selector for this element. This means that UiPath Studio is able to go through any element inside application. If this will be not possible then only image based activities or CV are able to do anything here.
About scraping data and keeping it in DataTable to have possibility to work with any particular element you should check out our Academy if you haven’t done it yet (especially Level 1 Foundation Training).
Thanks again for the response. I had another go and while I can use the data scraping to start to put together a data table, I don’t see how I can mark the checkbox for the row of the receipt number I want to process. I want to be able to say where receipt number is 9009401, mark the checkbox for this row.
I will look at the academy to learn more about data scraping but for now I still have the question as to how I can mark a particular check box.
If you are able to get data to data table then check the selectors for each checkbox and try to search for value by which you can point to particular checkbox using variable. If there is something, than you can extract one characteristic data next to this checkbox from your DataTable and use for example If activity in which you will mark the checkbox based on data. I know it’s only theory but I’m trying to let you understand how you could achieve one thing based on corresponding item from same line.
Is it possible to get an example of what you are stating? I understand that it is possible to get the data out into a datatable. I’m just really struggling with the linkage to the checkbox.
Also given that there are multiple rows I’d imagine that there will be a looping activity involved?
@JeffNZ,
Unfortunate I don’t have any example. Anyway about dynamic selectors you could check in Foundation Training. Regarding checkbox please check topics from solved here:
Thanks for your response again. I’ve managed to extract the receipt numbers in a column, store the receipt numbers as a string variable and I’ve even managed to identify which receipt number is a match. However I just can’t make the connection to the corresponding checkbox. I used the click activity to identify the selector properties of the checkbox and I’ve noticed that each checkbox is assigned a row number e.g. row01,row02 etc
Is there a way to say e.g. for receipt no 9009401 mark the checkbox where the selector property is assigned row01? I’ve attached my project.
Thanks again in advance - I’ve run through the examples but I haven’t found any answers as yet.
Also if you are ever in Wellington NZ we’ll take you for a coffee or whatever.
I observed one regular thing. Not sure if it’s always like this in your case but look that each receipt number have at the end a number which is corresponding to row. 9009401, 9009402 etc. you could use this to determine which checkbox should be marked. Use substring or regex method to extract last digit into variable and snap this variable into selector for the checkbox
For regex I used “(\d)” value. As you see my number is receipt number and the final writeline activity will return number “0”
Here you have xaml to see how it’s working regex.xaml (4.8 KB)
Thanks for that. I just still don’t understand what’s going on here as I’m just a complete rookie with UiPath.
So in your xaml you are returning 0 for receipt number 9009401. I don’t understand how the relative checkbox would be checked given that it hasn’t been data scraped already/clicked on to get the selector properties of that particular check box.
Let me try to describe it as simple as I can.
So let’s assume that you have selector for checkbox. You found out that each selector for each checkbox have one particular attribute which is changing for each row. (just as example… aaname=“checkbox1” or something like this.
You see that each checkbox has different aaname (only example). So based on receipt number you can build variable which after regular expression will give you number which will change for each row. Then you are doing calculation to make this each number be as same as your checkbox attribute. Then for this attribute you need to input variable instead of number and you have already dynamic selector which can be used to mark checkbox for each task you will make for the receipts.
How to mark it you will ask. By using this selector in Click activity for an instance
I’m very much a visual learner so I’m struggling with straight theory. While I can use click activity if I manually checked a box and find out the properties on that box I just do not know how UiPath will move to the next receipt number on the next data row and potentially check that box.
Is there anyway you can help me make the connection between my receipt no e.g 9009401 and its relative check box on the project I uploaded? I’m literally 90-95% completed my automation project and it will allow me to replicate 20+ similar processes in my organisation.
You can navigate through each receipt using For Each loop if you have data crapped.
The problem with help is that for proper settings the full selector is needed so I could check whether there is possibility to somehow connect receipt number with this or not (as this is just my theory).
By full selector do you mean accessing the element in UI explorer? I’ve attached the screenshot of UI explorer for a checkbox and receipt no for the 9009401 receipt no data row.
I think this can be used for pointing to checkbox:
Can you check if other checkboxes have same structure (I mean ID have everything the same except of ‘row0’)?
You say that a value such as “9009401” is in the same row, so you can use the tableRow attribute of the value’s selector in the checkbox selector.
First, you need to understand how to edit a variable into the selector, so you can replace the tableRow attribute of the checkbox. To do this, you simply click in the Property box for Selector, and you should notice that the selector is surrounded by quotations, therefore is a string. Then, you can concatenate variable inplace of the number for row.
So…
Here’s what you can simply do…
Use Get Attribute Activity with tableRow as the attribute, and store this to a string variable
— use the number directly in the selector for the aaname or innertext attribute (no For Each needed on the website). Your selector might look like: "<webctrl aaname='"+value.ToString+"' tag='DIV' />
Now that should get you the tableRow to use for the checkbox.
The selector might look like this: "<webctrl aaname='Click to mark row' tableRow='"+tableRow.ToString+"' tag='INPUT' />"
So all in all, you can do this in 2 activities:
So I think that makes it very simple. Hope it helps.
EDIT: you can replace the Check activity with the Click activity and use same selector. Sorry used wrong activity and assumed it was a checkbox.