Ich verwende Selenium , um mehrere Firefox-Sitzungen gleichzeitig zu steuern.
In diesem Zusammenhang behandelt das Betriebssystem jedes Firefox-Fenster als eine andere Anwendung.
Ich möchte einen Workflow erstellen, der es mir ermöglicht, alle aktuellen Fenster von Firefox zu schließen (wobei das "älteste" funktioniert), aber ich konnte keine Möglichkeit finden, sie nach ihrem Eröffnungsdatum zu sortieren.
Jede Hilfe wäre willkommen!
Versuchen Sie, auf das Fenstermenü von Firefox zuzugreifen, das älteste Fenster ganz oben in der Liste
Ich habe keine Erfahrung mit Selenium , aber ich frage mich, ob Sie ein AppleScript (das Alfred gerne verwenden kann) verwenden könnten, um die Fenster- IDs jedes Firefox- Fensters zu erhalten. Fenster- IDs werden normalerweise inkrementell zugewiesen, sodass ein aktuelles Fenster eine ID mit einem größeren numerischen Wert hat als die vorherigen.
tell application "Firefox" to get every window
sollte eine Liste aller Fenster zurückgeben, auf die durch ihre ID-Nummern verwiesen wird, z
{window id 59 of application "Firefox", window id 2408 of application "Firefox", window id 61 of application "Firefox", window id 60 of application "Firefox"}
Natürlich frage ich mich, wie sich das Ausführen mehrerer, separater Instanzen von Firefoxget windows
darauf auswirkt, da ich nicht vorhersagen kann, ob AppleScript den Befehl an alle Firefox- Instanzen sendet oder nur an eine (und wenn ja, an welche?).
Wenn diese Zeile so funktioniert, wie ich es möchte, können Sie die mit der kleinsten ID auswählen und die anderen schließen. Hier ist eine Möglichkeit, das zu tun:
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)
Mit etwas Hilfe von dieser Antwort konnte ich die IDs und die Namen aller derzeit laufenden Prozesse drucken.
Ich habe dann ein paar Tests durchgeführt und das sind meine Erkenntnisse:
Der Code, den ich verwendet habe, ist:
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)`
Es ist nicht optimal, aber ich musste nur die richtigen IDs bekommen, also reichte dieser Test für mich, um weiterzumachen.
Allan
GalAbra