Chiudi le finestre recenti di un'applicazione

1

Sto usando Selenium per controllare più sessioni di Firefox contemporaneamente.

In questo contesto, il sistema operativo gestisce ciascuna finestra di Firefox come un'applicazione diversa.

Voglio costruire un flusso di lavoro che mi consenta di chiudere tutte le finestre recenti di Firefox (lasciando il "più vecchio" funzionante), ma non sono riuscito a trovare un modo per ordinarle in base alla data di apertura.

Qualsiasi aiuto sarebbe apprezzato!

    
posta GalAbra 25.12.2017 - 12:27
fonte

3 risposte

0

Con l'aiuto di questa risposta sono riuscito a stampare gli ID e i nomi di tutti i processi attualmente eseguiti .

Ho quindi eseguito alcuni test e questi sono i miei approfondimenti:

  1. I processi sono ordinati per ultimi.
  2. I processi di Firefox che Selenium apre si chiamano "firefox-bin", in contrasto con i soliti processi "firefox".
  3. Quindi l'ordine degli ID corrisponde all'ordine dei nomi, quindi consente di attraversare gli elenchi e identificare le finestre aperte da Selenium.

Il codice che ho usato è:

tell application "System Events" to get the name of every process whose background only is false
set _name to result
tell application "System Events" to get the id of every process whose background only is false
set _id to result

set AppleScript's text item delimiters to space
do shell script ({"echo", _name & " " & _id, "| tr ' ' '\n'", "| sort -n"} as string)'

Non è ottimale, ma avevo solo bisogno di ottenere gli ID corretti, quindi questo test mi è bastato per andare avanti.

    
risposta data 26.12.2017 - 10:20
fonte
1

Prova ad accedere al menu della finestra di Firefox, la finestra più vecchia in cima alla lista

    
risposta data 25.12.2017 - 16:38
fonte
0

Non ho esperienza con Selenium , ma mi chiedo se potresti usare un AppleScript (che Alfred può usare felicemente) per ottenere la finestra id di ciascuna finestra Firefox . Gli id della finestra vengono normalmente assegnati in modo incrementale, pertanto una finestra recente avrà un id di valore numerico maggiore rispetto a quelli precedenti.

    tell application "Firefox" to get every window

dovrebbe restituire un elenco di tutte le finestre a cui fanno riferimento i loro numeri di identificazione, ad es.

    {window id 59 of application "Firefox", window id 2408 of application "Firefox", window id 61 of application "Firefox", window id 60 of application "Firefox"}

Naturalmente, mi chiedo come l'esecuzione di istanze multiple e separate di Firefox influirà su questo, poiché non posso prevedere se AppleScript invierà il comando get windows a tutti Firefox istanze o solo una (e, in tal caso, quale?).

Se quella linea funziona come voglio io, puoi scegliere quella con il id più piccolo e chiudere gli altri. Ecco un modo per farlo:

    tell application "Firefox" to get the id of every window

    set W to result

    set AppleScript's text item delimiters to space
    do shell script ({"echo", W, "| tr ' ' '\n'", "| sort -n"} as string)
        --> Outputs lines sorted from smallest to greatest value

    set W to first paragraph of result

    tell application "Firefox" to close (windows whose id > W)
    
risposta data 26.12.2017 - 07:04
fonte

Leggi altre domande sui tag