0 votos

Big Sur 11.1: AppleScript para cambiar automáticamente las redes Wi-Fi

Así que, como un usuario informó aquí en Stack Exchange, el comando incorporado "networksetup" en la terminal es bastante poco fiable a veces. Es lento, y he descubierto que por alguna razón dot1x nunca se establece correctamente para algunos tipos de redes Wi-Fi en mi casa. La solución: Crear un AppleScript para simular los clics del ratón en la barra de menús para cambiar entre las redes Wi-Fi.

¿Por qué la configuración de redes es tan lenta en comparación con el cambio manual de redes Wi-Fi?

El siguiente script me ha funcionado bien hasta Big Sur:

use application "System Events"

property process : a reference to application process "SystemUIServer"
property menu bar : a reference to menu bar 1 of my process
property menu bar item : a reference to (menu bar items of my menu bar ¬
    where the description contains "Wi-Fi")
property menu : a reference to menu 1 of my menu bar item
property menu item : a reference to menu items of my menu

to joinNetwork given name:ssid as text
    local ssid

    if not (my menu bar item exists) then return false
    click my menu bar item

    repeat until my menu exists
        delay 0.5
    end repeat

    set M to a reference to (my menu item where the name contains ssid)

    repeat 20 times --> 10 seconds @ 0.5s delay
        if M exists then exit repeat
        delay 0.5
    end repeat
    click M
end joinNetwork

joinNetwork given name:"my network ssid"

La razón por la que se rompió es que el Wi-Fi ya no es técnicamente una opción directa bajo la barra de menú principal. En su lugar, está relegado al Centro de Control en Big Sur, y creo que incluso puede haber otro submódulo que está técnicamente anidado dentro de la interfaz de usuario. He estado leyendo durante horas acerca de las personas que tratan de superar este desafío en Big Sur, por ejemplo, para automatizar un clic en el dispositivo Bluetooth específico, pero muchos AppleScripts gente escribió aparentemente rompió en la actualización 11.1, y no tengo ningún punto de partida fácil aquí para averiguar cómo lograr lo que estoy tratando de hacer para Wi-Fi.

Cualquier ayuda aquí sería tremendamente apreciada.

Nota al margen: Sé que el mismo usuario también publicó un método usando AppleScriptObjC, pero como la gente señaló, es un enorme riesgo de seguridad porque necesitas poner tu contraseña en algún lugar como texto plano. La interfaz de usuario script es por lo tanto la mejor opción en mi mente, así que me gustaría conseguir que funcione de nuevo.

0voto

user3579815 Puntos 11

La técnica que he encontrado para trabajar es interactuar con los diálogos del centro de control de forma individual. Esto es analizando cada diálogo (2 en total) usando UI Browser o Accessibility Inspector.

  1. Empiece por hacer clic en el elemento de la barra de menús que hará aparecer el primer diálogo.
  2. Activa la segunda acción ("mostrar detalles") de la casilla WIFI.
  3. Para simplificar, ponga un retardo para esperar a que se cargue el segundo diálogo, yo usé 0,8 segundos. Una mejor opción es un bucle de espera para que el componente UI exista.
  4. Haga clic en la primera casilla cuyo nombre coincida con el SSID. Puede tratarse de cualquier SSID WIFI disponible o de un punto de acceso personal que esté al alcance.

El Código

tell application "System Events" to tell process "ControlCenter"
   click menu bar item "Control Center" of menu bar 1

    -- Following block fixes a strange bug where in subsequent run results in an error
    try
        entire contents of group 1 of group 1 of window "Control Center"
    on error
        click menu bar item "Control Center" of menu bar 1
    end try

    perform action 2 of checkbox "WiFi" of group 1 of group 1 of window "Control Center"

    delay 0.8
    tell window "Control Center"
        click (first checkbox of group 1 of group 1 whose name starts with "anSSID")
    end tell
end tell

Probado en Mac OS 11.5.2

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