0 votos

Los medios para que Applescript acceda al botón de menú PDF de la ventana de impresión de Chrome cambiaron en Sonoma

Tengo un AppleScript que solía funcionar para imprimir una pestaña de Chrome a pdf.

Recientemente actualicé a Sonoma y el script ya no funciona. No he ejecutado el script por mucho tiempo, así que no sé si es específico de Sonoma.

La versión de mi Chrome es 120.0.6099.71

        tell process "Chrome"
            set frontmost to true

            # Abrir el diálogo de impresión
            keystroke "p" using {command down, option down}

            # Esperar a que se abra el diálogo de impresión antes de continuar
            set loopcount to 0
            repeat until exists window "Print"
                set loopcout to loopcount + 1
                if loopcount > 50 then
                    display dialog "Ventana de impresión no encontrada"
                end if

            end repeat

            key code 48 # enviar carácter de tabulación para ir a la primera página
            key code 48 # enviar carácter de tabulación para ir a la última página
            keystroke "1" # hacer que la página 1 sea la última página
            key code 48 # tabulación a la casilla de escala
            keystroke "90" # establecer escala en 90            
            # Expandir el botón de menú "PDF" (debe estar expandido antes de que el menú sea referenciable)
            delay 1
            click menu button "PDF" of window "Print"

            # Esperar a que se cree el menú del botón de menú antes de continuar
            repeat until exists menu item "Guardar como PDF…" of menu 1 of menu button "PDF" of window "Print"
            end repeat
            # Seleccionar el elemento de menú "Guardar como PDF"
            click menu item "Guardar como PDF…" of menu 1 of menu button "PDF" of window "Print"

            # Esperar a que se abra el cuadro de diálogo de Guardar antes de continuar
            repeat until exists button "Guardar" of sheet 1 of window "Print"
            end repeat

            # Pegar el nombre de archivo y Guardar

            set value of text field 1 of sheet 1 of window "Print" to "archivo_de_prueba.pdf"

            click button "Guardar" of sheet 1 of window "Print"

            delay 1

        end tell
        #display dialog "miURL: " & myURL

    end tell

Cuando ejecuto este código ahora recibo el siguiente error:

error "Eventos del sistema obtuvo un error: No se puede obtener el botón de menú \"PDF\" de la ventana \"Print\" del proceso \"Chrome\"." número -1728 de menu button "PDF" of window "Print" of process "Chrome"

¿Me puedes ayudar a descubrir cómo abrir la ventana de impresión de PDF desde AppleScript?

0voto

Brandon Puntos 981

Así que, gracias a @benwiggy, descubrí que la interfaz de usuario cambió en Sonoma. Así que pasé un tiempo intentando averiguar en qué elemento se encuentra el botón de PDF en Sonoma.

Encontré esta respuesta en stackexchange útil:

Cómo enumerar los elementos de la interfaz de usuario en Applescript

También puedes usar UIBrowser3, que es más conveniente que el método de AppleScript.

Descubrí que el botón de PDF ahora es:

menú de botones 1 del grupo 2 del grupo divisor 1 de la ventana "Imprimir"

Lo que lleva al código revisado (y funcional):

    tell application "System Events"
        tell process "Chrome"
            set frontmost to true
            delay 1

            # Abrir el diálogo de impresión
            keystroke "p" usando {command down, option down}

            # Esperar hasta que se abra el diálogo de impresión antes de continuar
            set repeatcount to 0
            repeat until exists ventana "Imprimir"
                set repeatcount to repeatcount + 1
                if repeatcount > 50 then
                    mostrar diálogo "Ventana de impresión no detectada"
                end if
            end repeat

            key code 48 # enviar carácter de tabulación para ir a la primera página
            key code 48 # enviar carácter de tabulación para ir a la última página
            keystroke "1" # hacer que la página 1 sea la última página
            key code 48 # tabulación a cuadro de escala
            keystroke "90" # establecer escala en 90    
            #set UIElems to elementos de interfaz de usuario del grupo 2 del grupo divisor 1 de la ventana "Imprimir"
            #mostrar diálogo UIElems
            # Expandir el botón de menú "PDF" (debe estar expandido antes de que el menú sea referenciable)
            clic en menú de botones 1 del grupo 2 del grupo divisor 1 de la ventana "Imprimir"

            # Esperar hasta que se cree el menú del botón del menú antes de continuar
            #delay 2
            repeat until exists elemento de menú "Guardar como PDF…" del menú 1 del grupo 2 del grupo divisor 1 de la ventana "Imprimir"
            end repeat
            # Seleccionar el elemento de menú "Guardar como PDF"
            clic en elemento de menú "Guardar como PDF…" del menú 1 del grupo 2 del grupo divisor 1 de la ventana "Imprimir"

            # Esperar hasta que se abra el diálogo de Guardar antes de continuar
            repeat until exists botón "Guardar" de hoja 1 de ventana "Imprimir"
            end repeat

            # Pegar el nombre de archivo y Guardar

            establecer valor del campo de texto 1 de hoja 1 de ventana "Imprimir" a SaveFileName

            clic en botón "Guardar" de hoja 1 de ventana "Imprimir"

Como señala @benwiggy, esto puede ser menos que óptimo, porque la estructura lógica de los elementos de la interfaz de usuario puede cambiar en cualquier momento (como se muestra en Sonoma), pero es útil para mi aplicación y para scripting ocasional.

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