1. Introduktion #
Selectors er det vi bruger, når vi skal interagere med User Interfaces (UI) eller websider. Disse bruges til at pege på indhold i disse, eksempelvis knapper eller tekstfelter, så man kan benytte disse.
Navn | Note | Link |
jQuery Selectors | Oversigt over jQuery selectors man kan bruge | https://www.w3schools.com/jquery/jquery_ref_selectors.asp |
Regular Expressions | Afsnit om regex med flere kilder til denne | Regular Expressions (Regex) – RPA Help |
Den nemmest måde at teste selectors er at lave et focus på vinduet, og bare sende klikket afsted, se om robotten fanger det, og så pille med selectors igen hvis det forsat ikke virker. Jo kortere, og mere præcis en selector er, jo mindre vedligehold skal man lave i fremtiden.
1.1 Eksempel #
Man kan lave selectors på mange måder, og for at gøre dem så robuste som muligt, er der nogle standardløsninger man kan bruge. Typisk kan man justere sine selectors via sit RPA-software. Herunder er et eksempel, på Windows Lommeregner, hvor vi skal trykke på 9-knappen.
Selectoren til 9-knappen kan se således ud. Lig mærke til at der kan være flere niveauer i en selector, hvor vi finder bagved liggende dele, som hjælper med at pege på hvad vi søger. I dette tilfælde sidder knappen på en pane, markeret med blå på det ovenstående billede, sammen med de resterende knapper. Man kan i dette tilfælde pege på knappen via dens class og name, som burde være unikt nok til at ramme den. Alternativt kan man ramme dens id i stedet, markeret i blå nedenfor. Der vil altid være lidt trial-and-error i dette, for at finde ud af hvad en selector skal indeholde, for at virke. Jo mindre man skal bruge, jo nemmere er den at vedligeholde. Samtidigt kan man have behov for at gøre den længere, for at præcisere nøjagtigt hvad man leder efter.
2. Generelt #
2.1 Custom Selector #
I nogle tilfælde kan man også bygge en custom selector, som dynamisk kan vælge imellem forskellige elementer. Dette kan være en lettere løsning til selectors som ligner hinanden, men hvor forskellen eksempelvis kun er navnet. I vores lommeregner eksempel, vil vi have mange selectors der skal vedligeholdes, såfremt man ønsker en per knap. Alternativt kan vi lave en dynamisk selector, som kan bruges i stedet.
Med udgangspunkt i Power Automate Desktop, kan vi i selectoren til vores 9-knap slå Text editor til, og i stedet for 9 i Name, indsætte en variabel.
Efterfølgende i koden kan man så ændre i variablen, før man sender et tryk afsted, alt efter hvilken en knap man ønsker at trykke på.
2.2 Regular Expressions (regex) match #
Man kan også regular expressions (regex) i sine controls, for at matche bedre på sine selectors. Eksempelvis hvis der er ID / navne af en control som er delvist autogenereret, kan disse være svære at fange uden regex.
I dette eksempel har vi en iframe som skifter ID, hver gang en ny session åbnes. Så vi ved ikke hvad tallene, kommer til at være hver gang, men vi ved der altid vil være en variation af tal. Vi matcher derfor direkte på det vi kender, og bruger en (\d+) regex, til at sige +x antal tal der kommer her. Mængden af tal eller hvad der er, er regex ligeglad med, den finder blot noget der matcher den streng som er indsat.
2.3 Find image #
Nogle RPA-programmer, heriblandt Power Automate Desktop, har mulighed for at finde billeder på skærmen, flytte musen, og eventuelt trykke. Man tager et billede af knappen man leder efter (lignende prtscrn i Snagit og Greenshot), og herefter forsøger robotten selv at finde billedet på skærmen. Det kan bruges både i UI og Webautomation.
2.4 Valider input #
I nogle tilfælde kan man have brug for at trække et resultatet ud eller validere at et input man har lavet, nu også er blevet lavet. Det kan være filtre man sætter i en applikation, for at sortere data, inden man trækker det ud eksempelvis. Typisk bliver det brugt til konsol-applikationer, hvor vi ikke ellers reelt ved hvad der sker, når vi sender klik afsted.
Dette eksempel bygger videre på lommeregner-eksemplet. Der findes to tekst-felter, hvor den ene holder styr på hvad der er tastet, og den anden på det løbende resultat / senest inputtet tal.
I eksempelvis Power Automate Desktop, har man mulighed for at trække teksten fra en attribut i selectoren ud. Herfra kan man fra lommeregneren enten trække resultatet ud, markeret i gul ovenfor på billedet, og bruge i sin kode fremadrettet. Man kan også trække mellemregningen ud, markeret i blå på ovenstående billede, for at validere at man har trykket på de rigtige ting.
3. Web Automation – jQuery Selectors #
I Web Automation har vi yderligere mulighed for at bruge jQuery selectors, som kan være med til dynamisk at finde selectors på hjemmesider. Typisk bruges disse hvis en hjemmeside, har meget autogeneret kode, som ikke har nogle unikke eller sigende selectors man kan bruge. For at bruge disse kræver det at man laver custom selectors.
Man kan eksempelvis bruge en :contains(“Tekst”) bagved sin selector. Dette får selectoren til at lede efter en knap, hvor der er en string klistret på, med den teksten der er skrevet ind. Herunder findes et eksempel fra msn.com hvor det markerede kan ændres, til samtlige overskrifter i det markerede røde felt.
Før justering i koden, hvor vi rammer via li (list item) delen af selector
Efter justering i koden hvor vi rammer på a (link) delen af selectoren