0 votos

¿Cómo puedo convertir una ruta de elementos de interfaz de usuario en cadena/texto?

Estoy usando lo siguiente para obtener la ruta del elemento de interfaz de usuario para la ubicación del puntero del ratón.

use framework "Foundation"

property NSEvent : a reference to current application's NSEvent
property NSScreen : a reference to current application's NSScreen

-- # Get display size
set display to NSDeviceSize ¬
    of deviceDescription() ¬
    of item 1 ¬
    of NSScreen's screens() as record

delay 3

-- # Get mouse location (relative to the bottom-left of the screen)
set mouseLocation to {x, y} of (NSEvent's mouseLocation as record)

-- # Calculate mouse y-coordinate so it's relative to the top of the screen
set mouseLocation's item 2 to (display's height) - (mouseLocation's item 2)

tell application "System Events"
    click at the mouseLocation
end tell

el resultado que devolverá será algo como

text area 1 of scroll area 1 of splitter group 1 of splitter group 1 of window "Untitled.scpt" of application process "Script Editor" of application "System Events"

Quiero ser capaz de operar en esto como una cadena de texto para la salida de depuración de Keyboard Maestro, pero no tengo ni idea de cómo convertir este tipo de cadena / ruta de elementos de interfaz de usuario en una cadena de texto. Por favor, ¡ayuda!

1voto

red_menace Puntos 111

Puedes utilizar un viejo truco que fuerza un error para obtener una cadena de mensajes. El principal problema es que intentar hacer algo como coercionar la referencia al objeto directamente elimina los términos de scripting, por lo que acabas con la sintaxis chevron sin procesar. Si eso no es lo que quieres, puedes dejar que AppleScript genere su propio texto de error de coerción, por ejemplo:

# Get text of object reference
tell application "System Events"
   try
      UI element (click at the mouseLocation) -- force coercion error
      --> "button 2 of toolbar 1 of window \"Untitled 1.scpt\" of application process \"Script Editor\""

      -- also --
      # (click at the mouseLocation) as text
      --> "«class butT» 2 of «class tbar» 1 of window \"Untitled 1.scpt\" of «class pcap» \"Script Editor\" of application \"System Events\""

   on error errmess -- extract reference from error message (English)
      log errmess
      set here to (offset of "Can’t make " in errmess) + 11 -- note typographer's quote
      set there to -(offset of "\"" in (reverse of characters of errmess) as text) -- last quote of process name
      return text here thru there of errmess
   end try
end tell

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