HI
I’m working on an automation that after 20 loops clicks the “next page” button and continues with the work.
Currently I have to write numerous IF to predict all possible pages and it’s hard.
IF loop = 21
click button next page
IF loop = 41
click button next page
IF loop = 61
click button next page
IF loop = 81
click button next page
I would like to know if there is a simpler solution to perform a click/action after 20 loops (at loops 21 - 41 - 61 - 81 - 101 - 121 and so on) so as to avoid having to write many IF for each possible page.
Thanks for suggestion
Hi,
- If you’re unknow xpath, please refer Loop action to next elements in page - #2 by Starbucks
- Simplest solution, change number of records per page to maximum.
- Understand Data Flow Control using loops: White / For, If / Else / Else if, GotoIf, Break / Continue.
- Investigate properties of elements (page 1, page 2…) to find the xpath formula
Example: See photo attached.
- Pagination: 20 records
- Page 1-> Page end: Locator of Customer Code cell:
Row 1: xpath=//div[@role=“row” and @row-index=“0” and @aria-rowindex=“3”]/div[@col-id=“cust_code”]/div
Row 2: Same above with parameters: row-index=“1” and @aria-rowindex=“4”
…
Row 20: row-index=“19” and @aria-rowindex=“22”
…
The formula is same for page 1–> page 2 → page end…
PSEUDOCODE: Data flow control
i = 0 // define parameter
j = 0
While (true)
{
j = 3 + i;
xLoc = ( xpath= //div[@role=“row” and @row-index=“${i}” and @aria-rowindex=“${j}”]/div[@col-id=“cust_code”]/div )
If (element xLoc presented)
{
Do action…;
i = i + 1; // next row on current page
}
// Each page: maximum 20 records exist: row-index={0,1,…19}. Not present: row-index = 20
Else If (next page button presented)
{
Click next page button; // next page
i = 0; // first row on current page
}
Else Break // last page: exist loop
}
1 Like
At this time i used this if with multiple conditions
IF
${!TIMES} == 21 || ${!TIMES} == 41 || ${!TIMES} == 61 || ${!TIMES} == 81 || ${!TIMES} == 101 || ${!TIMES} == 121 || ${!TIMES} == 141 || ${!TIMES} == 161 || ${!TIMES} == 181 || ${!TIMES} == 201 || ${!TIMES} == 221 || ${!TIMES} == 241 || ${!TIMES} == 261 || ${!TIMES} == 281 || ${!TIMES} == 301 || ${!TIMES} == 321 || ${!TIMES} == 341 || ${!TIMES} == 361 || ${!TIMES} == 381 || ${!TIMES} == 401 || ${!TIMES} == 421 || ${!TIMES} == 441 || ${!TIMES} == 461 || ${!TIMES} == 481 || ${!TIMES} == 501
CLICK NEXT PAGE BUTTON
You can try: If ((${!TIMES}-1)%20)==0 then Click next page button
Explanation: The operator % returns the remainder left over when one operand is divided by a second operand
1 Like