script funciona en Script Editor pero no como aplicación (MacOS Mojave)

1

La siguiente secuencia de comandos funciona como se espera en el Editor de secuencias de comandos:

tell application "System Events"
    set nord to menu bar item 1 of menu bar 2 of application process "NordVPN IKE"
    ignoring application responses
        click nord
    end ignoring
end tell
do shell script "killall System\ Events"
tell application "System Events"
    set nord to menu bar item 1 of menu bar 2 of application process "NordVPN IKE"
    tell menu 1 of nord
        if exists menu item "Disconnect" then
            click menu item "Disconnect"
        else
            click menu item "Connect"
        end if
    end tell
end tell

Cuando lo exporto a .app y hago doble clic en él para ejecutarlo, aparece el siguiente error:

  

No se puede obtener «men menE» 1 de «class mbri» 1 de «class mbar» 2 de «class pcap» "NordVPN IKE" de la aplicación "System Events". Índice no válido.

     

Los eventos del sistema obtuvieron un error: no se puede obtener el menú 1 del elemento 1 de la barra de menú de la barra de menú 2 del proceso de aplicación "NordVPN IKE". Índice no válido. (-1719)

¿Cómo puedo cambiar la secuencia de comandos para que funcione como .app ?

Gracias

    
pregunta Walrus the Cat 01.11.2018 - 23:10

1 respuesta

0

Necesitas hacer dos cosas para que esto se ejecute:

En primer lugar, debe asegurarse de que System Events tenga permisos en el panel de preferencias de Accesibilidad.

En segundo lugar, debe agregar un retraso después de hacer clic en el elemento del menú para darle tiempo a cargar. En última instancia, eso es lo que está causando el error de índice, porque el menú aún no se ha propagado y está intentando acceder a los elementos que contiene. Cambie su script a lo siguiente:

....
        click nord
    end ignoring
end tell
delay 0.3
do shell script "killall System\ Events"
....
    
respondido por el Walrus the Cat 02.11.2018 - 18:48

Lea otras preguntas en las etiquetas