Page 1 of 1

Assistance with validation in html table

Posted: Tue Apr 21, 2020 8:56 am
by cs97jjm3
Hello all, hope you are are well and staying safe.

need a bit of help i have following page with a html table and i need to verify amounts are correct... i am just looking at Company and Value

invoice validation.png
my csv file is (sample)
Customer Invoice Value
1 £2,602.95
10 £48.00
11 £15.99
12 £56.01
13 £513.31
14 £88.00
15 £119.58
16 £30.00
17 £9.99
18 £35.00
19 £12.00
2 £172.00
20 £4.00
21 £14.00
3 £496.86
4 £60.00
5 £20.00
6 £69.99
7 £30.00
8 £9.99
9 £35.00
CLIENT100 £13.00
CLIENT101 £0.00
CLIENT102 £12.99
CLIENT103 £13.00
CLIENT104 £0.00
CLIENT105 £12.99
CLIENT106 £12.00
CLIENT107 £0.00
CLIENT108 £15.99
CLIENT109 £9.80


Attached is snapshot

Re: Assistance with validation in html table

Posted: Tue Apr 21, 2020 10:18 am
by odklizec
Hi,

And what exactly is your problem? As long as the list of companies is always in the same order, it should not be a problem to use the csv as data connector and simply enumerate all its rows and compare each row with appropriate TD tag in table? The only problem is, that there is currently no way to associate Company and Value header with appropriated TD cell, using an elegant one-do-it-all xpath. It's something I've requested a while ago, unfortunately, it got a very little attention from the community, therefore, it scored very low number or votes :)
https://uservoice.ranorex.com/forums/15 ... -html-cell

You have two options.
A) if you are sure, that the order of columns will remain the same over the time, ou can create an xpath with hardcoded index of TD belonging to Company and Value columns:
Company TD xpath:
/dom[@domain='test.mywebroster.com']//frame[#'frmContents']/?/?/frame[@name='InvoiceContents']//table[#'grdInvoiceLog']/tbody//td[2][@visible='True']
Value TD xpath:
/dom[@domain='test.mywebroster.com']//frame[#'frmContents']/?/?/frame[@name='InvoiceContents']//table[#'grdInvoiceLog']/tbody//td[5][@visible='True']
Now because you want to match "company" and "value" values, you can do something like this:
/dom[@domain='test.mywebroster.com']//frame[#'frmContents']/?/?/frame[@name='InvoiceContents']//table[#'grdInvoiceLog']/tbody//td[2][@innertext='10'][@visible='True']/../td[5][@visible='True']
The above xpath returns "value" TD for company "10". Now you should variabilize the company:
/dom[@domain='test.mywebroster.com']//frame[#'frmContents']/?/?/frame[@name='InvoiceContents']//table[#'grdInvoiceLog']/tbody//td[2][@innertext=$companyName][@visible='True']/../td[5][@visible='True']
So now if you connect the companyName variable with customer column in your csv, the test should cycle through the csv, and you can validate inner text of each returned TD element (by above xpath) with Invoice Value obtained from CSV file.

The problem of above solution is, that if the order of columns changes, you may need to manually update the TD indexes in above xpath. Hence it's better get the actual childindex of Customer and Value column via GetValue action, as described here:
https://www.ranorex.com/forum/slicing-t ... tml#p52064

B) A completely different approach could be using table snapshot and some code, as described here:
https://www.ranorex.com/help/latest/han ... einwebibri

Re: Assistance with validation in html table

Posted: Tue Apr 21, 2020 1:43 pm
by cs97jjm3
Thanks for reply very in-depth, but understandable, Thanks i went with your option A

big thanks:

I had already voted for that one :-)