Python

GUI automatiseerimine Pyautogui, Pythoni abil

GUI automatiseerimine Pyautogui, Pythoni abil
PYAUTOGUI on Pythoni poolt pakutav automaatikamoodul klaviatuuri ja hiire funktsioonide juhtimiseks programmi kaudu. Sellel moodulil on peaaegu kõik funktsioonid, mida saab klaviatuuri ja hiirega täita. Saame neid funktsioone kasutada hiire ja klaviatuuri toimingute automatiseerimiseks.

Pyautogui installimine

Enne funktsiooni PYAUTOGUI moodul, peame selle installima. Selle mooduli installimiseks käivitage terminalis järgmine käsk.

$ pip installi pyautogui

VÕI

$ pip3 installige pyautogui

Nüüd PYAUTOGUI on kasutamiseks valmis.

Ekraani eraldusvõime saamine

Enne hiire toimingute automatiseerimist on hea tava teada ekraani eraldusvõimet. Saame ekraani eraldusvõime selle abil .suurus () meetod

PYAUTOGUI.  Vaadake allpool ekraani eraldusvõime saamist "laius X kõrgus" kujul:

Python 2.7.15+ (vaikimisi, 7. oktoober 2019, 17:39:04)
[GCC 7.4.0] veebisaidil linux2

Lisateabe saamiseks sisestage „help“, „copyright“, „credits“ või „litsents“.

>>> impordi pyautogui
>>> laius, kõrgus = pyautogui.suurus ()
>>> print (laius)
1366
>>> print (kõrgus)
768

See tähendab, et meil on ekraani horisontaalsuunas 1366 ja vertikaalses suunas 768 pikslit.

Hiire liigutamine ekraanil

Nii et me teame oma kuva eraldusvõimet. Nüüd saame hiirt ekraani eraldusvõime piires kõikjal ekraanil liigutada. Saame hiirt liigutada .kolima() PYAUTOGUI meetod.  Allpool on näide hiire teisaldamisest 2 sekundiga asendisse (100 100)

>>> impordi pyautogui
>>> pyautogui.moveTo (100 100, kestus = 2)

Oleme edastanud kolm argumenti .meetod moveTo (). Esimesed kaks argumenti on kohustuslikud ja näitavad sihtkoha positsiooni, kuid kolmas argument pole kohustuslik. Kui me ei edasta kolmandat argumenti, liigub hiir aja jooksul sihtkohta.

Hiire klõpsamine, kerimine ja lohistamine

PYAUTOGUI pakub hiire toimingute juhtimiseks mõningaid meetodeid. Saame hiirt klõpsata, kerida ja lohistada, kasutades erinevaid meetodeid.

Hiire klõpsamise saab teha kasutades .klõpsake () meetodit. Enne klõpsamist viige hiir vajalikule pikslile, seejärel kasutage .klõpsake () klõpsamiseks meetodit. Järgmine näide on hiire klõpsamise toiming.  Allpool toodud näide liigutab hiire (300 201) piksli juurde ja klõpsab hiirt.

>>> impordi pyautogui
>>> pyautogui.moveTo (300,201)
>>> pyautogui.klõpsake ()

Kasutades saate hiirega topeltklõpsata .topeltklõps() meetod.

>>> pyautogui.moveTo (300,201)
>>> pyautogui.topeltklõps()

PYAUTOGUI pakub meetodit .kerige () hiire kerimiseks üles või alla. See meetod võtab argumendina täisarvu, seejärel kerib sõltuvalt täisarvust üles või alla. Kui edastate positiivse täisarvu, kerib see üles ja negatiivse täisarvu korral alla. Kui palju see kerib? See sõltub täisarvu väärtusest.

>>> impordi pyautogui
>>> pyautogui.kerimine (20)
>>> pyautogui.kerimine (-20)

Ülaltoodud näites kerib hiir kõigepealt 20 ühikut ülespoole ja seejärel 20 ühikut alla.

Kasutades saab kasutada ka hiire lohistamist .lohista () PYAUTOGUI mooduli meetod. Lohistamine tähendab hiire liigutamist, vajutades samal ajal ühte hiire nuppu. See meetod võtab kolm argumenti, esimesed kaks argumenti sihtkoha koordinaatide kuvamiseks ja viimane argument on kestvusaeg, mis tähendab, kui palju aega kulub sihtkohta liikumiseks.

Lohistamistoimingu nägemiseks avage värv, maksimeerige aken, valige pliiats ja käivitage järgmised käsud interaktiivsesse kesta.  Kood liigutab hiire 2 sekundiga (138 229) pikslisse ja lohistab seejärel 2 sekundi jooksul ka hiire praeguselt pikslilt nõutavale pikslile.

>>> impordi pyautogui
>>> pyautogui.moveTo (138, 229, kestus = 2)
>>> pyautogui.dragTo (238, 229, kestus = 2)
>>> pyautogui.dragTo (238, 329, kestus = 2)
>>> pyautogui.dragTo (138, 329, kestus = 2)
>>> pyautogui.dragTo (138, 229, kestus = 2)

Koodi kohal tehakse hiirega lohistades värviprogrammi ruut.

Kuidas leida kataloogi või faili ikooni koordinaate

Faili või kataloogi koordinaatide leidmiseks, .positsioon () kasutatakse meetodit. See meetod tagastab koordinaadid, millel hiir parasjagu viibib. Koordinaatide leidmiseks toimige järgmiselt

  1. Avage pythoni konsool
  2. Tüübi asukoht ()
  3. Enne „ENTER“ klahvi vajutamist liigutage hiire nool ikoonile, kust soovite leida koordinaadid
  4. Seejärel vajutage käsu täitmiseks sisestusklahvi

PAUSE ja VIGADE KÄSITLEMINE

Kirjutate hiire toimingute automatiseerimiseks skripti ja vajate iga käsu vahel lühikest pausi. Kuidas sa sellega hakkama saad? Kas te kasutate .magama () meetod AEG iga käsu järel? Kuid see suurendab teie koodi pikkust. Seda saab teha seadistades pyautogui.PAUS muutuv pauside arvu järgi. See loob iga käsu järel pausi.  Allpool toodud näide peatab iga käsu vahel 3 sekundit.

>>> impordi pyautogui
>>> pyautogui.PAUS = 3
>>> pyautogui.moveTo (100,100)
>>> pyautogui.moveTo (200 200)

Pythonil on ka a VIGA tunnusjoon. Selle funktsiooni lubamiseks seadsime pyautogui.VIGA tõeseks. Kuidas see töötab? Näiteks on teie ekraani eraldusvõime 1366 x 768. Kui liigutate hiire väärtusele (1500 1500), jookseb programm kokku faili FailSafeException tõstmisega. Selle erandiga saate hakkama kas try ja va avalduse abil või keelates pyautogui.VIGA. Funktsiooni FAILSAFE keelamise korral ei tõsta programm seda erandit.

>>> impordi pyautogui
>>> pyautogui.FAILSAFE = Vale
>>> pyautogui.suurus ()
Suurus (laius = 1366, kõrgus = 768)
>>> pyautogui.moveTo (1500 1500)
>>> pyautogui.moveTo (100,100)

Ülaltoodud näites liikusime hiirega (1500 1500) pikslit, kuid ekraanil on (1366 768) pikslit. Programm ignoreeris seda erandit.

Stringi saatmine klaviatuurilt

PYAUTOGUI pakub funktsiooni stringi edastamiseks klaviatuurilt. Seda saab teha kasutades .selle mooduli typewrite () meetod. Enne stringi edastamist klaviatuurilt keskenduge aknale, kus soovite stringi edastada. Nõutavale aknale keskendumiseks saame seda kasutada .klõpsake () meetodit.

Nende kahe käsu vahel kasutasime semikoolonit, kuna see keskendub tekstiredaktorile ja viib stringi üksteise taha. Nüüd on küsimus selles, kuidas saaksime sisestada klahve Alt või Shift. Neid võtmeid saab esitada lühikeste stringi väärtustega. Mõned stringi väärtused on toodud allpool.

Võtmete stringiväärtused
Vasak ja parem ALT-klahv "altleft", "altright"
Vasak ja parem SHIFT-klahv "shiftleft", "Shiftright"
Vasak ja parem juhtnupp "ctrlleft", "ctrlright"
PAGE UP ja PAGE DOWN Klahvid 'pageup', 'pagedown'
BACKSPACE ja DELETE Klahvid 'tagasilükkeklahv', 'kustuta'
Üles, alla, vasakule ja paremale nooleklahvid "üles", "alla", "vasakule", "paremale"
CAPS LOCK võtme kapsel
ENTER Klahv "sisesta"
ESC võti "esc"
TAB-klahvi vahekaart
KODU ja LÕPP klahvid "kodu", "lõpp"
F1 – F12 Klahvid „f1”, „f2”,… . , "f12"
NUM LOCK-klahv "numlock"
PRTSC klahv 'prindiekraan'
INSERT Võti "sisesta"

Ühe ülaltoodud võtme edastamiseks kasutame neid stringi väärtusi loendi kujul. Järgmine näide selgitab seda.  Kood läbib kaks korda „kapslit”. Esimene kord loendi kujul ja teine ​​kord lihtsa stringina. Loendis 'capslock' läbimine vajutab klahvi 'CAPS LOCK'. Ja teine ​​„capslock“ kirjutab lihtsalt suurtähte „capslock“, kui esmalt vajutatakse klahvi „CAPSLOCK“.

>>> impordi pyautogui
>>> pyautogui.kirjutusmasin (['capslock']); pyautogui.kirjutusmasin ('capslock')
KAPSLUKK >>> KAPSLUKK

Otseteede vajutamine

Otsetee on klahvide kombinatsioon mõne ülesande täitmiseks. Näiteks praeguse akna sulgemiseks kasutatakse otseteed Alt + F4. Klahvide kombinatsiooni saab edastada ka klaviatuurilt PYAUTOGUI mooduli abil. Alt + F4 vajutamiseks vajutage kõigepealt klahvi Alt ja seejärel klahvi F4. Pärast klahvi F4 vabastamist vabastame klahvi Alt. Siin me kasutame .keyUp () ja .keyDown () võtmete kombinatsiooni vajutamise meetodid.  Järgmine näide näitab klahvi Alt hoidmist ja klahvi F4 vajutamist koos.

import pyautogui
impordiaeg
pyautogui.keyDown ('alt')
pyautogui.keyDown (<'f4')
aeg.magama (.5)
pyautogui.keyUp ('f4')
pyautogui.keyUp ('alt')

MÄRGE: Ülaltoodud näites ei kasutanud me võtmete „Alt” ja „F4” stringide loendit. Stringi väärtuse loend edastatakse ainult kasutajale .kirjutusmasin () meetod.

Alt-klahvi vajutamine ja hoidmine, seejärel klahvi F4 vajutamine ja pärast klahvi F4 vabastamist on klahvi Alt vajutamine väga keeruline. Seda saab teha lihtsalt kasutades .kiirklahv () meetod. Järgmine näide puhastab kontseptsiooni.

import pyautogui
impordiaeg
pyautogui.kiirklahv ('alt', 'f4')

Ekraanipildi tegemine ja analüüsimine

Ekraanipilti saame teha ka pythoni abil. Pyautogui moodul pakub .ekraanipilt () meetod praeguse ekraani ekraanipildi tegemiseks. Ekraanipilti saab kuvada, kasutades .näita () meetod. Ekraanipildi tegemiseks ja kuvamiseks käivitage järgmine käsk.

>>> impordi pyautogui
>>> img = pyautogui.ekraanipilt ()
>>> img.näita ()

Kui käivitate ülaltoodud käsud ekraanipildi tegemiseks, salvestatakse see muutuja 'img'. Nüüd saame muutujale 'img' kutsuda täiendavaid meetodeid.

Kasutades saame hulga meie nõutava piksli RGB väärtustest .getpixel () meetod muutuja 'img' kohta. Argument anti üle .getpixel () meetod on dupleks, mis sisaldab ekraanipildi x ja y koordinaate. Käivitage interaktiivsesse kesta järgmine käsk.

>>> img.getpixel ((2,3))
(85, 82, 74)

Lisaks saame pildi suuruse järgmise käsu abil

>>> img.suurus
(1366, 768)

Saame kontrollida, kas antud ekraani pikslid sobivad antud RGB väärtusega või mitte. Seda saab teha kasutades .pixelMatchesColor () meetod. Sellele meetodile edastatakse kokku kolm argumenti. Esimesed kaks argumenti on ekraani x ja y koordinaadid ning kolmas argument on RGB väärtuste kogu. See meetod tagastab väärtuse „Tõene”, kui värv sobib piksliga, vastasel korral „Väär”. Seda meetodit saab kasutada järgmiselt

>>> pyautogui.pixelMatchesColor (2,3, (85,82,74))
Tõsi
>>> pyautogui.pixelMatchesColor (3,5, (52,85,74))
Vale

Oleme näinud mõningaid põhitõdesid ja nüüd näeme järgmistes jaotistes mõningaid GUI automatiseerimise juhtumeid PYAUTOGUI mooduli abil.

Erinevate failide automaatne avamine teile

Iga päev oma kontoris peate töötajate andmete käsitsi sisestamiseks avama palju faile. See on natuke igav tegu. Kõigepealt minge kataloogi Dokumendid, minge teise kataloogi ja avage fail, seejärel naaske kataloogi Dokumendid ja minge teise kataloogi ja tehke sama asi jne.

Seda saab teha lihtsalt pythoni skripti kirjutades. Peate käivitama ainult skripti ja skript avab kõik failid.

Selle ülesande täitmiseks peate kõigepealt leidma järgmise koordinaadid

  1. Iga kataloogi ikoon
  2. Iga faili ikoon
  3. Minimeeri failide nupp

Kuidas koordinaate leida, on varem selgitatud.

# pyautogui mooduli importimine
import pyautogui
# 1-pausi genereerimine.5 sekundit pärast iga käsku
pyautogui.PAUS = 1.5
# liigutades hiire tegumiriba ikoonile „See arvuti”
pyautogui.moveTo (346 752)
# klõpsates ikooni 'See arvuti'
pyautogui.klõpsake ()
# liigutades hiire kataloogi 'Dokumendid' ikoonile
pyautogui.moveTo (95 184)
# klõpsates kataloogil 'Dokumendid'
pyautogui.klõpsake ()
# hiire liigutamine kataloogi 'Dokumendid' sees olevasse kataloogi
pyautogui.moveTo (249 107)
# topeltklõps kataloogi avamiseks
pyautogui.topeltklõps()
# hiire liigutamine avamiseks failil
pyautogui.moveTo (249 108)
# topeltklõps failil avamiseks
pyautogui.topeltklõps()
# hiire liigutamine minimeerimise nupul
pyautogui.moveTo (1310,47)
# klõpsates faili minimeerimiseks
pyautogui.klõpsake ()

Ülaltoodud koodis avame ainult ühe faili. Samamoodi saate koodi laiendada mitme faili avamiseks.

Süsteem on hõivatud

Olete oma töökohal ja te ei tööta süsteemiga, kuid teie süsteemil on installitud rakendus, mis võib hiire liigutamise abil arvata, kas istute jõude või töötate süsteemiga. Nii et soovite hiire iga lühikese ajavahemiku järel liikumiseks automatiseerida.

Seda saab teha väikese pythoni skripti abil PYAUTOGUI moodul.

import pyautogui
# hiire liigutamise vahel 5-sekundilise pausi genereerimine
pyautogui.PAUS = 5
proovige:
# Lõputu aasa jooksmine
tõsi:
# hiire liigutamine (200 300) koordinaatidele 1 sekundiga
pyautogui.moveTo (200 300, kestus = 1)
# liigutame hiire koordinaadiks (201 310) 1 sekundiga
pyautogui.moveTo (201 310, kestus = 1)
välja arvatud KeyboardInterrupt:
print ('lõpetamine')

Ülalolevas koodis liigutame hiirt iga 5 sekundi järel ühest kohast teise. Saame selle koodi sulgeda, vajutades klahvikombinatsiooni „Ctrl + C”.

Järeldus

Selles blogis arutasime, kuidas saate PYAUTOGUI moodulit süsteemi GUI automatiseerimiseks. Selle mooduli erinevaid funktsioone on selgitatud ja saate nende funktsioonide abil automatiseerida peaaegu kõike, mida saab klaviatuuri ja hiire abil teha.

OpenTTD õpetus
OpenTTD on seal üks populaarsemaid ärisimulatsioonimänge. Selles mängus peate looma suurepärase transpordiettevõtte. Alustate siiski alguses umbes 190...
SuperTuxKart Linuxile
SuperTuxKart on suurepärane pealkiri, mis on loodud selleks, et tuua teie Linuxi süsteemis tasuta Mario Karti kogemus. See on päris keeruline ja lõbus...
Lahing Wesnothi õpetuse eest
Battle for Wesnoth on üks populaarsemaid avatud lähtekoodiga strateegiamänge, mida saate praegu mängida. See mäng pole mitte ainult olnud väga pikka a...