Automazione della GUI con Pyautogui, Python

Automazione della GUI con Pyautogui, Python
Pyautogui è un modulo di automazione fornito da Python per il controllo delle funzioni della tastiera e del mouse tramite il programma. Questo modulo ha quasi tutte le funzioni che possono essere eseguite dalla tastiera e dal mouse. Possiamo usare queste funzioni per automatizzare le azioni del mouse e della tastiera.

Installazione di Pyautogui

Prima di usare le funzioni di Pyautogui modulo, dobbiamo installarlo. Per installare questo modulo, eseguire il seguente comando in terminale.

$ pip Installa Pyautogui

O

$ PIP3 Installa Pyautogui

Ora Pyautogui è pronto per l'uso.

Ottenere la risoluzione del display

Prima di automatizzare le azioni del mouse, è una buona pratica conoscere la risoluzione del display. Possiamo ottenere la risoluzione del display utilizzando .misurare() metodo di

Pyautogui. Vedi sotto ottenendo la risoluzione dello schermo sotto forma di "larghezza x altezza":

Python 2.7.15+ (impostazione predefinita, 7 ottobre 2019, 17:39:04)
[GCC 7.4.0] su Linux2

Digita "Guida", "Copyright", "Credit" o "Licenza" per ulteriori informazioni.

>>> Importa Pyautogui
>>> larghezza, altezza = pyautogui.misurare()
>>> stampa (larghezza)
1366
>>> stampa (altezza)
768

Significa che abbiamo 1366 pixel in direzione orizzontale del display e 768 pixel in direzione verticale del display.

Spostando il mouse in mostra

Quindi conosciamo la risoluzione del nostro display. Ora possiamo spostare il mouse ovunque sul display entro i limiti di risoluzione del display. Possiamo spostare il mouse usando .moveTo () Metodo di Pyautogui. Esempio di seguito del mouse mobile alla posizione (100.100) in 2 secondi

>>> Importa Pyautogui
>>> Pyautogui.Moveto (100.100, durata = 2)

Abbiamo superato tre argomenti a .Metodo moveTo (). I primi due argomenti sono obbligatori e mostrano la posizione di destinazione, ma il terzo argomento non è obbligatorio. Se non passiamo il terzo argomento, il mouse si sposta a destinazione in pochissimo tempo.

Facendo clic, scorrendo e trascinando il mouse

Pyautogui fornisce alcuni metodi per controllare le azioni del mouse. Possiamo fare clic, scorrere e trascinare il mouse usando metodi diversi.

È possibile eseguire il clic di azione del mouse utilizzando .Metodo Click (). Prima di fare clic, spostare il mouse sul pixel richiesto, quindi utilizzare .Fai clic su () per fare clic su. Di seguito è riportato l'esempio per eseguire l'azione di clic del mouse. Esempio di seguito passerà al mouse su (300.201) pixel e fai clic sul mouse.

>>> Importa Pyautogui
>>> Pyautogui.Moveto (300.201)
>>> Pyautogui.clic()

È possibile fare doppio clic sul mouse utilizzando .doppio click() metodo.

>>> Pyautogui.Moveto (300.201)
>>> Pyautogui.doppio click()

Pyautogui fornisce un metodo .scorrere() per scorrere il mouse su o giù. Questo metodo prende un numero intero come argomento, quindi scorre verso l'alto o verso il basso a seconda del numero intero. Se passi un numero intero positivo, scorrere verso l'alto e per un numero intero negativo scorrere verso il basso. Quanto scorrerà? Dipende dal valore dell'intero.

>>> Importa Pyautogui
>>> Pyautogui.Scroll (20)
>>> Pyautogui.Scroll (-20)

Nell'esempio sopra, prima il mouse scorrerà su 20 unità e quindi scorrere verso il basso 20 unità.

Il funzionamento del mouse di trascinamento può anche essere applicato utilizzando .dragto () Metodo del modulo Pyautogui. Trascinando i mezzi, spostando il mouse mentre si preme uno dei pulsanti del mouse. Questo metodo richiede tre argomenti, i primi due argomenti per visualizzare le coordinate della destinazione e l'ultimo argomento è il tempo di durata che significa quanto tempo ci vorrà per spostarsi a destinazione.

Per vedere l'operazione di trascinamento, aprire la vernice, massimizzare la finestra, scegliere la matita ed eseguire i seguenti comandi nella shell interattiva. Il codice sposterà il mouse su (138.229) pixel in 2 secondi, quindi trascina il mouse dal pixel corrente al pixel richiesto anche in 2 secondi.

>>> Importa Pyautogui
>>> Pyautogui.Moveto (138, 229, durata = 2)
>>> Pyautogui.Dragto (238, 229, durata = 2)
>>> Pyautogui.Dragto (238, 329, durata = 2)
>>> Pyautogui.Dragto (138, 329, durata = 2)
>>> Pyautogui.Dragto (138, 229, durata = 2)

Il codice sopra creerà un programma quadrato su verniciatura trascinando il mouse.

Come trovare le coordinate di un'icona di directory o file

Per trovare le coordinate di un file o di una directory, .posizione() viene utilizzato il metodo. Questo metodo restituisce le coordinate in cui è attualmente presente il mouse. Segui i passaggi indicati per trovare le coordinate

  1. Apri la console Python
  2. Tipo posizione ()
  3. Prima di premere il tasto "Invio", sposta la freccia del mouse sull'icona, dove si desidera trovare coordinate
  4. Quindi premere Invio per eseguire il comando

Gestire la pausa e fallire

Stai scrivendo uno script per automatizzare le azioni del mouse e hai bisogno di una breve pausa tra ogni comando. Come lo gestirai? Userai .sonno() metodo di TEMPO modulo dopo ogni comando? Ma aumenterà la durata del codice. Questo può essere fatto mediante impostazione Pyautogui.PAUSA variabile al numero di secondi che desideri una pausa. Questo creerà una pausa dopo ogni comando. L'esempio seguente fa una pausa 3 secondi tra ciascun comando.

>>> Importa Pyautogui
>>> Pyautogui.Pausa = 3
>>> Pyautogui.Moveto (100.100)
>>> Pyautogui.Moveto (200.200)

Python ha anche un Fallsafe caratteristica. Per abilitare questa funzione, abbiamo impostato Pyautogui.Non riesce a vero. Come funziona? Ad esempio, il tuo display ha una risoluzione di 1366 x 768. Se si sposta il mouse su (1500.1500), il programma si schianterà aumentando FailsafeException. È possibile gestire questa eccezione utilizzando Try and Trange l'istruzione o disabilitando Pyautogui.Fallsafe. Disabilitando la funzione FailSafe, il programma non aumenterà questa eccezione.

>>> Importa Pyautogui
>>> Pyautogui.FailSafe = false
>>> Pyautogui.misurare()
Dimensione (larghezza = 1366, altezza = 768)
>>> Pyautogui.Moveto (1500.1500)
>>> Pyautogui.Moveto (100.100)

Nell'esempio sopra abbiamo spostato il mouse su (1500.1500) pixel ma lo schermo ha (1366.768) pixel. Il programma ha ignorato questa eccezione.

Invio di una stringa dalla tastiera

Pyautogui fornisce una funzione per passare una stringa dalla tastiera. Questo può essere fatto usando .Metodo da typewrite () di questo modulo. Prima di passare la stringa dalla tastiera, concentrati sulla finestra in cui hai intenzione di passare la stringa. Per concentrarci sulla finestra richiesta, possiamo usare .Metodo Click ().

Abbiamo usato un punto e virgola tra i due comandi mentre si concentra sull'editor di testo e supera la stringa dietro l'altro. Ora la domanda è come possiamo passare le chiavi "alt" o "shift". Queste chiavi possono essere rappresentate da valori di stringa brevi. Alcuni valori di stringa sono riportati di seguito.

Valori della stringa dei tasti
Keys Altleft "sinistro e destro" Altleft "," Altright "
Chiavi a sinistra e a destra "Shiftleft", "Shiftright"
Chiavi di controllo sinistra e destra "CtrlLeft", "ctrlright"
Pagina su e pagina giù tasti "Pagina", "PageDown"
Backspace ed elimina le chiavi "backspace", "elimina"
Su, giù, tasti di freccia a sinistra e destra "su", "giù", "sinistra", "destra"
Tasto di blocco Caps "Capslock"
Immettere la chiave 'INVIO'
ESC Key 'ESC'
Tasto tab 'Tab'
Casa e fine chiavi "casa", "fine"
F1 a f12 tasti 'f1', 'f2', .. . , 'f12'
Tasto di blocco num "Numlock"
Key PRTSC "PrintScreen"
Inserisci il tasto 'inserire'

Per passare una delle chiavi sopra, utilizziamo questi valori di stringa in forma di elenco. Il seguente esempio chiarirà questo. Il codice sta passando "capslock" due volte. Prima volta in forma di elenco e seconda volta String semplice. Passando "Capslock" nell'elenco premuto il tasto "Caps Lock". E il secondo "capslock" semplicemente scrivi "capslock" nel capitale come il tasto "capslock" viene premuto per primo.

>>> Importa Pyautogui
>>> Pyautogui.dattilrite (['capslock']); pyautogui.dattilrite ('capslock')
Capslock >>> capslock

Scorciatoie pressanti

Una scorciatoia è la combinazione di chiavi per svolgere alcune attività. Ad esempio, il collegamento 'alt+f4' viene utilizzato per chiudere la finestra corrente. Una combinazione di tasti può anche essere passata dalla tastiera usando il modulo Pyautogui. Per premere "Alt+F4", premi prima e tratteniamo il tasto "ALT", quindi premiamo il tasto "F4". Dopo aver rilasciato la chiave "F4", rilasciamo il tasto "Alt". Qui useremo .keyup () E .keydown () Metodi per premere una combinazione di chiavi. L'esempio seguente mostra la pressione e la tenuta del tasto "alt" e la pressione e il tasto "F4" insieme.

Importa Pyautogui
tempo di importazione
Pyautogui.keydown ('alt')
Pyautogui.keydown (<'f4')
tempo.sonno(.5)
Pyautogui.keyup ('f4')
Pyautogui.keyup ('alt')

NOTA: Nell'esempio sopra non abbiamo usato l'elenco del valore stringa di chiave "alt" e "f4". L'elenco del valore della stringa viene passato solo a .dattilrite () metodo.

È molto complicato premere e tenere premuto il tasto "Alt", quindi premere il tasto "F4" e dopo aver rilasciato il tasto "F4", quindi rilasciare il tasto "Alt". Questo può essere fatto semplicemente usando .Hotkey () metodo. Il seguente esempio eliminerà il concetto.

Importa Pyautogui
tempo di importazione
Pyautogui.Hotkey ('alt', 'f4')

Schermatura e analizzare lo screenshot

Possiamo anche fare screenshot usando Python. Offerte del modulo Pyautogui .immagine dello schermo() Metodo per prendere lo screenshot dello schermo corrente. Lo screenshot può essere visualizzato utilizzando .spettacolo() metodo. Esegui il seguente comando per prendere uno screenshot e visualizzarlo.

>>> Importa Pyautogui
>>> img = pyautogui.immagine dello schermo()
>>> img.spettacolo()

Quando si esegue i comandi sopra per prendere lo screenshot, verrà salvato nella variabile "IMG". Ora possiamo chiamare ulteriori metodi sulla variabile 'IMG'.

Possiamo ottenere una tupla dei valori RGB del nostro pixel richiesto utilizzando .getPixel () Metodo sulla variabile 'IMG'. Argomento passato a .Il metodo getPixel () è una tupla contenente le coordinate xey dello screenshot. Esegui il comando seguente nella shell interattiva.

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

Inoltre possiamo ottenere la dimensione dell'immagine usando il comando seguente

>>> img.misurare
(1366, 768)

Possiamo verificare se i pixel di schermo indicati corrispondono o meno al valore RGB dato. Questo può essere fatto usando .PixelMatcheScolor () metodo. Un totale di tre argomenti vengono passati a questo metodo. I primi due argomenti sono le coordinate xey dello schermo e il terzo argomento è una tupla di valori RGB. Questo metodo restituisce "vero" se il colore corrisponde a pixel altrimenti "false". Questo metodo può essere usato come segue

>>> Pyautogui.Pixelmatchescolor (2,3, (85,82,74))
VERO
>>> Pyautogui.Pixelmatchescolor (3,5, (52,85,74))
Falso

Abbiamo visto alcune basi e ora nelle sezioni seguenti vedremo alcuni casi d'uso di automatizzazione della GUI usando il modulo Pyautogui.

Aprire automaticamente file diversi per te

Ogni giorno nel tuo ufficio, devi aprire molti file per inserire manualmente alcuni dati dei dipendenti. È una cosa un po 'noiosa da fare. Prima vai alla directory dei documenti, quindi vai a un'altra directory e apri un file, quindi torna alla directory del documento e vai a un'altra directory e fai la stessa cosa ecc.

Questo può essere fatto semplicemente scrivendo una sceneggiatura Python. Quello che devi fare è eseguire solo lo script e lo script aprirà tutti i file.

Per eseguire questo compito, prima di tutto devi individuare le coordinate del seguito

  1. Icona di ogni directory
  2. Icona di ogni file
  3. Riduci al minimo il pulsante dei file

Come trovare le coordinate è stato spiegato in precedenza.

# Importazione del modulo Pyautogui
Importa Pyautogui
# generazione di una pausa di 1.5 secondi dopo ogni comando
Pyautogui.Pausa = 1.5
# Spostare il mouse su icona "questo PC" sulla barra delle applicazioni
Pyautogui.Moveto (346.752)
# facendo clic sull'icona "questo PC"
Pyautogui.clic()
# Spostare l'icona della directory "documenti"
Pyautogui.Moveto (95.184)
# Fare clic sulla directory "Documenti"
Pyautogui.clic()
# Spostando il mouse nella directory della directory all'interno
Pyautogui.Moveto (249.107)
# Double Flicking per aprire la directory
Pyautogui.doppio click()
# Spostare il mouse sul file per aprire
Pyautogui.Moveto (249.108)
# Doppio clic sul file per aprire
Pyautogui.doppio click()
# Spostare il mouse su un pulsante Riduci
Pyautogui.Moveto (1310,47)
# facendo clic per ridurre al minimo il file
Pyautogui.clic()

Nel codice sopra, apriamo un solo file. Allo stesso modo è possibile estendere il codice per aprire più file.

Guardando impegnato sul sistema

Sei al tuo lavoro e non stai lavorando sul sistema, ma il tuo sistema ha un'app installata che può indovinare se sei seduto inattivo o lavora sul sistema usando il movimento del mouse. Quindi vuoi automatizzare il mouse per muoversi dopo ogni breve intervallo di tempo.

Questo può essere fatto scrivendo un piccolo script di Python usando Pyautogui modulo.

Importa Pyautogui
# Generazione di una pausa di 5 secondi tra il movimento del topo
Pyautogui.Pausa = 5
Tentativo:
# In esecuzione del ciclo infinito
mentre è vero:
# Mouse Mouse a (200.300) coordinate in 1 secondo
Pyautogui.Moveto (200.300, durata = 1)
# Mouse Mouse a (201.310) coordinarsi in 1 secondo
Pyautogui.Moveto (201.310, durata = 1)
Tranne la tastiera interrupt:
print ('smettere')

Nel codice sopra stiamo spostando il mouse da una posizione in un'altra posizione ogni 5 secondi. Possiamo lasciare questo codice premendo "Ctrl+C".

Conclusione

In questo blog abbiamo discusso di come puoi usare il modulo Pyautogui per automatizzare la GUI del sistema. Sono state spiegate diverse funzioni di questo modulo e puoi automatizzare quasi tutto ciò che può essere fatto usando tastiera e mouse usando queste funzioni.