Cerrar las ventanas recientes de una aplicación

1

Estoy usando Selenium para controlar varias sesiones de Firefox al mismo tiempo.

En este contexto, el sistema operativo maneja cada ventana de Firefox como una aplicación diferente.

Quiero crear un flujo de trabajo que me permita cerrar todas las ventanas recientes de Firefox (dejando la "más antigua" en funcionamiento), pero no pude encontrar ninguna manera de ordenarlas por fecha de apertura.

Cualquier ayuda sería apreciada!

    
pregunta GalAbra 25.12.2017 - 12:27

3 respuestas

0

Con la ayuda de esta respuesta pude imprimir los ID y los nombres de todos los procesos que se ejecutan actualmente .

Luego hice algunas pruebas y estas son mis ideas:

  1. Los procesos están ordenados por los más recientes.
  2. Los procesos de Firefox que abre Selenium se denominan "firefox-bin", a diferencia de los procesos / procesos habituales de "firefox".
  3. Por lo tanto, el orden de los identificadores coincide con el orden de los nombres, por lo que permite cruzar las listas e identificar las ventanas que ha abierto Selenium.

El código que utilicé es:

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)'

No es óptimo, pero solo necesitaba obtener las ID correctas, por lo que esta prueba fue suficiente para seguir adelante.

    
respondido por el GalAbra 26.12.2017 - 10:20
1

Intente acceder al menú de la ventana de Firefox, la ventana más antigua en la parte superior de la lista

    
respondido por el nelson 25.12.2017 - 16:38
0

No tengo experiencia con Selenium , pero me pregunto si podría usar un AppleScript (que Alfred puede usar) para obtener la ventana id de cada ventana de Firefox . Los id de la ventana normalmente se asignan de forma incremental, por lo que una ventana reciente tendrá un id de mayor valor numérico que los que venían antes.

    tell application "Firefox" to get every window

debería devolver una lista de todas las ventanas referenciadas por sus números de identificación, por ejemplo

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

Por supuesto, me pregunto cómo afectará esto al ejecutar múltiples instancias separadas de Firefox , ya que no puedo predecir si AppleScript enviará el comando get windows a todos Firefox instancias o solo una (y, si es así, ¿cuál?).

Si esa línea funciona como quiero, entonces puedes seleccionar la que tenga la identificación más pequeña y cerrar las demás. Aquí hay una forma de hacerlo:

    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)
    
respondido por el CJK 26.12.2017 - 07:04

Lea otras preguntas en las etiquetas