Cerrar windows recientes de una aplicación

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

En este context, el SO maneja cada window de Firefox como una aplicación diferente.

Quiero crear un flujo de trabajo que me permita cerrar todas las windows recientes de Firefox (dejando funcionando la "más antigua"), pero no pude encontrar ninguna forma de orderarlas por su date de apertura.

¡Cualquier ayuda sería apreciada!

  • My Dock no se iniciará al iniciar session
  • ¿Cómo renunciar por nombre del process?
  • ¿Qué es SimStreamProcessorService?
  • applepushserviced y ocspd llevan mucha memory, ¿los está matando?
  • ¿A dónde se dirigió el directory / proc en Mountain Lion?
  • ¿Hay una alternativa de htop-on-linux para top / Activity Monitor en OS X?
  • ¿Cómo aislar una aplicación del sistema (aplicación totalmente aislada)?
  • ¿Utilidad para advertir cuando el process toma 100% de CPU por x minutos?
  • 3 Solutions collect form web for “Cerrar windows recientes de una aplicación”

    Intenta acceder al menu de la window de Firefox, la window más antigua en la parte superior de la list

    No tengo experiencia con Selenium , pero me pregunto si podría usar un AppleScript (que Alfnetworking puede usar felizmente) para get los id de la window de cada window de Firefox . Los identificadores de window normalmente se asignan de forma incremental, por lo que una window reciente tendrá un ID de mayor valor numérico que los que le precedieron.

    tell application "Firefox" to get every window 

    debería devolver una list de todas las windows referencedas por sus numbers 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 la ejecución de múltiples instancias separadas de Firefox afectará esto, ya que no puedo pnetworkingecir si AppleScript enviará el command get windows a todas las instancias de Firefox o solo a una (y, de ser así, ¿cuál?).

    Si esa línea funciona como yo quiero, entonces puedes elegir la que tenga la identificación más pequeña y cerrar las demás. Aquí hay 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) 

    Con algo de ayuda de esta respuesta , pude imprimir los ID y los nombres de todos los processs que se ejecutan actualmente.

    Luego realicé algunas testings y estas son mis ideas:

    1. Los processs están orderados por el más reciente.
    2. Los processs de Firefox que abre Selenium se llaman "firefox-bin", a diferencia de los processs / es usuales de "firefox".
    3. Por lo tanto, el order de los ID coincide con el order de los nombres, por lo que permite cruzar entre las lists e identificar las windows que Selenium ha abierto.

    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 get los ID correctos, así que esta testing fue suficiente para seguir adelante.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).