Sikuli: skript med skärmdumpar

Jag stötte på ett fascinerande projekt med öppen källkod häromdagen som lovar att göra livet lite lättare för mig, och kanske kommer det att göra det för dig också.

Sikuli: skript med skärmdumpar

Det är ett helt plattformsoberoende automationsverktyg som kallas Sikuli från User Interface Design Group på MIT, med ett riktigt coolt användargränssnitt (vilket inte är så överraskande, med tanke på dess augusti härkomst) och förmågan att skripta saker som hittills varit oskriptbara.

Ett av huvudproblemen med skriptsystem som AppleScript är att de kräver åtminstone visst samarbete från själva applikationen. När det gäller AppleScript måste applikationen implementera och publicera en skriptordbok, medan verktyg som Visual Basic bara kan göra så mycket och de har stora svårigheter med övervägande grafiska användargränssnitt. Sikuli med öppen källkod syftar till att lösa det problemet och fokuserar väldigt mycket på att göra det möjligt för dig att skripta även ett helt grafiskt användargränssnitt.

För att visa hur snyggt det är, ta en titt på skärmdumpen nedan, som visar ett skript som jag skapade för att börja spela iTunes:

Sikuli
(Klicka på bilden för att förstora)

Du kommer att märka att det inte är ett typiskt skriptspråk, eftersom det faktiskt finns grafiska element där inne bland skriptkommandona. Det är där Sikuli skiljer sig från andra skriptspråk jag har sett: du definierar de åtgärder som den ska utföra genom att ta tag i gränssnittselementen som du vill att den ska manipulera. På en Mac är den här gripfunktionen mappad till Command-Shift-2, och när du trycker på den tangentkombinationen blir skärmen mörkare så att du kan välja en region, då regionen klistras in i IDE (integrerad utvecklingsmiljö) .

Låt oss gå igenom det här skriptet rad för rad:

1. Det första jag behöver göra är att flytta till utrymmet där jag har iTunes igång. OS X använder konceptet ”Spaces”, eller virtuella skärmar, och jag har iTunes igång på min 10:e plats, som jag kan komma till genom att trycka på Ctrl-0, så jag säger åt Sikuli att skriva det. Sedan byter jag till iTunes för att göra det till den främsta applikationen.

2. Nu vill jag se till att volymen är hela vägen upp. Även om Sikuli kan göras för att dra element som volymreglaget, hade jag problem med att få det att fungera i alla fall – reglaget verkar alldeles för litet för att det ska kännas igen på ett tillförlitligt sätt. Så jag använde den alternativa metoden, som är att öka volymen med kommando-upp-pilen, och jag måste göra detta flera gånger för att se till att volymen är maximal, så jag går bara runt och gör det 30 gånger. (Om du är en Python-programmerare kanske du känner igen WHILE-loopkonstruktionen: det visar sig att Sikuli Script, skriptspråket som Sikuli använder, är baserat på Jython, en Java-implementering av Python, så alla vanliga konstruktioner som slingor är tillgängligt.)

3. När jag har höjt volymen måste jag se till att iTunes DJ-spellistan är vald. Återigen, men mina första försök var inte särskilt framgångsrika. Min första version av skriptet hade just Sikuli att klicka direkt på iTunes DJ-ikonen, men om den ikonen redan var vald skulle den markeras, och grafikigenkänningsmotorn kunde inte matcha den eftersom jag hade bett den att klicka på den omarkerade version. Det kan mycket väl finnas en elegant lösning för detta som jag inte har upptäckt – det är fortfarande relativt tidigt för mig med Sikuli – men jag valde ett brute-force och okunnighetssätt (alltid min favorit) genom att låta Sikuli först klicka på en spellista Jag visste omöjligt kunde väljas, nämligen ringsignaler, och först då att klicka på iTunes DJ.

4. Äntligen har jag skriptet, klicka på knappen Spela, och musiken startar. Jag sparade skriptet på mitt skrivbord som en körbar fil, och nu när jag vill starta iTunes behöver jag bara dubbelklicka på det.

Sikuli är en smart mjukvara. Kärnan i det är en motor för grafikigenkänning som hittar det bildelement du letar efter närhelst skriptet körs. Du kan finjustera den genom att justera ”känsligheten” för matchningen – om du dubbelklickar på en bild i IDE kommer ett fönster upp som visar dig den aktuella skärmen plus alla regioner som din tagna bild skulle matcha, och genom att flytta känslighetsreglaget kan du justera det tills endast det område du är intresserad av är valt.

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *