Approve everything pending
Work an office queue the way QHuman does: find every row marked Pending, click its Approve button, and keep looping until the table is clear. You will practice against a page that keeps a running count, so you can prove the queue emptied.
This lab is the office version of "click on what you find," and it builds the same job twice, because there are two honest ways to do it: fire at every copy at once, or take one a pass and loop until there are none left. The second is slower on purpose, and by the end you will know which one you actually want.
Open the target first. It opens in a new tab. Point QHuman at it and read its counters as you go.
Open Row ProcessorTwelve rows, eight of them Pending, and the decoys are scattered through the list rather than sitting politely at the bottom.
Build the macro
-
Snip the Approve button as your target In a New Detection, add a click step, set Find: to Image, and press Capture snippet.... Drag a tight box over one Approve button so it catches the blue edge and the Approve label, not a flat patch of the middle.Acme Holdings Pending ApproveAll flat fillNo edge, no label, nothing to lock onto. Flat blue matches all over the screen, so the click never reliably lands on a button.Acme Holdings Pending ApproveOnto the row behindNow it carries the name and amount, which change on every row, so the match gets shaky.
Aim between the two: tight on the button so the snip catches its blue edge and the Approve label, not a flat middle and not the row. Every Pending row carries that same button, so one good crop finds all eight. -
Click every match, not just the best Set Which matches: to Every match on screen. It ships on Best match only, so that is the one field you change, and note where it lives: matching all copies is a property of the click, not of the detection.Click on detected targetFind:ImageImage file:approve.pngMatch confidence:0.80Click point on the match:CenterOffset:X 0Y 0Which matches:Every match on screenOKCancel
One field changed; the rest is default. Back in the step, the Do list now reads Click image approve.png at CENTER (all). That (all) is the whole difference: one action, eight clicks, back to back. -
Rehearse with Try it (dry run) Press Try it (dry run), then Start observing: it does not open running. You should see all eight buttons found and the four decoys ignored. That shows what the detection saw, so it proves your snippet, not your click mode.
-
Run it, and watch how fast that was Run the flow for real. Pending drops to 0 and Approved jumps to 10 almost instantly: all eight clicks fire inside that one action with no gap. The queue is clear, but it looks nothing like a person, and no setting puts a pause between those eight.
-
Slow it down to one row a pass Press R to refill the queue. Put Which matches: back to Best match only, then press Add advanced ▾ and add Wait a random moment.... Now the step clicks the topmost button and pauses. That pause only works because one pass is now one click: match all is fast, best match is paceable.
-
Loop it, and give it a way out One click per pass is useless without a loop. Point a transition from the step back to itself for is found on screen, then add a second for is NOT on screen aimed at a new step with Terminal (entering it ends the run) ticked. Nothing stops by itself: no Terminal step, no ending.Start Approve Click image approve.png at CENTER (best) Wait a random moment↻target is found on screen → Approve↓target is NOT on screen → DoneDone Terminal: entering it ends the run
Two transitions off one step, and the order matters: the first one that matches wins. The second edge is the whole difference between a loop and a macro you have to go and stop by hand.
Either version ends here, and the loop should get there one row at a time with a pause between each. The two grey Review rows are still sitting there untouched: you never taught QHuman what to avoid, only what the right rows have.
Delete the is NOT on screen transition and run it again. It clears the queue and then keeps going, looping on an empty table until you stop it by hand. Put the transition back. Knowing exactly what a missing exit feels like is worth the thirty seconds, because that is the bug you will write for yourself one day, on a page with no counters to tell you.
If it went wrong
- It approves one row and stops The click is on Best match only and nothing loops it. Either set Which matches: to Every match on screen, or add the transition back to the step. Note this is a setting on the click, not on the detection, which is where most people go looking first.
- The loop never ends It keeps looping on an empty table. There is no is NOT on screen transition, or the step it points at does not have Terminal ticked. A loop with no terminal exit runs until you stop it.
- A grey or green row gets clicked The snippet caught an edge or the pill instead of the button. Re-snip a tighter piece of the blue Approve button so only Pending rows match.
- Pending never reaches 0 A couple of rows linger. Lower Match confidence a little and re-run Try it (dry run) to see whether those buttons are being found at all. Leave Click point on the match alone: it is already Center, and Offset: is the field that moves a click, not that one.
Stuck?
Grab the finished macro. Download it and open QHuman's Import shared file... to load it, then compare it to what you built. It is a reference to read, not a macro to run: the detection snippet inside was captured on another screen, so it will not match your display. Run with the one you took in the lab instead.
Download the solution (.qhz)Keep going
Want the full detail behind patterns like this? Read the use cases guide. Ready for the next lab? Next up is Wait for it, then go, where a flow waits for a job to finish before it acts.