1 votos

Cerrar ventanas recientes de una aplicación

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

En este contexto, el SO 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 funcionando la "más antigua"), pero no pude encontrar ninguna forma de ordenarlas por su fecha de apertura.

¡Cualquier ayuda sería apreciada!

1voto

nelson Puntos 1153

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

0voto

qarma Puntos 71

Yo no tengo experiencia con el Selenium, pero me pregunto si usted podría utilizar un AppleScript (que Alfred se puede hacer feliz a utilizar) para obtener la ventana de identificaciónde cada uno de Firefox ventana. Ventana id's se suele asignar de forma incremental, por lo que un reciente ventana tendrá un id de mayor valor numérico que los que vinieron antes de él.

    tell application "Firefox" to get every window

debe devolver una lista de todas las ventanas que se hace referencia 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 ejecutar múltiples instancias independientes de Firefox afectará esto, como yo no puede predecir si AppleScript enviará el get windows comando para todos Firefox instancias o sólo uno (y, si es así, ¿cuál?).

Si esa línea funciona como yo quiero, entonces usted puede elegir el uno con el más pequeño de identificación y cierre de los demás. Aquí está una manera 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)

0voto

xidgel Puntos 113

Con la ayuda de esta respuesta yo era capaz de imprimir el Id y los nombres de todos los procesos que se ejecutan actualmente.

Me corrió un par de pruebas y estas son mis ideas:

  1. Los procesos están ordenados por el más reciente.
  2. El Firefox procesos que el Selenium se abre con el nombre "firefox-bin", en vez del habitual "firefox" proceso/es.
  3. Por lo tanto el Id de orden coincide con el nombre de " orden, por lo que permite cruzar entre las listas e identificar el windows que el Selenium se ha abierto.

El código que he usado 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 la óptima, pero yo sólo lo necesario para obtener el derecho de IDs, por lo que esta prueba fue suficiente para que me mueva.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X