Jak poznać nazwę elementów interfejsu użytkownika za pomocą Inspektora dostępności (lub dowolnego innego narzędzia)

21

Próbuję wejść w interakcję z oknem dialogowym drukowania za pomocą Applescript.

Chcę emulować to, że użytkownik ustawia wartość dla konkretnego menu rozwijanego.

Powiedz, że mam:

tell application "System Events"
  tell process "Preview"
    set value of pop up button XXX to YYY
  end tell
end tell

Skąd mam znać nazwę XXX? Na przykład, jak odróżnić menu rozwijane „drukarka” od „ustawień wstępnych”?

Otworzyłem Inspektora dostępności, ale na podstawie wyświetlanych tam informacji nie mogę znaleźć odniesienia do nazwy lub innego unikalnego identyfikatora dla określonego menu rozwijanego.

Widziałem wiele osób używających liczb w celu odniesienia do różnych list rozwijanych, ale nie jestem pewien, czy to dobra praktyka. Co się stanie, jeśli Apple zdecyduje się na zamianę kolejności dwóch list rozwijanych w pewnym momencie?

Każda pomoc będzie mile widziana.

AKTUALIZACJA :

Używając 10.6.8 i inspektora zgodnie z sugestią poniżej, otrzymuję:

wprowadź opis zdjęcia tutaj

Roberto Aloi
źródło
Znalazłem UI elementspolecenie stąd pomocny także: n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescript
PHS
Oto link do innej strony w Ask Different, która jest powiązana z bieżącą stroną, o nazwie: AppleScript - W jaki sposób mogę uzyskać programowo nazwy, atrybuty, właściwości, klasy elementów interfejsu bez „zgadywania” za pomocą Inspektora dostępności? (To pytanie było powodem, dla którego chciałem poznać podstawowe fakty na temat „
Poradnika

Odpowiedzi:

15

AKTUALIZACJA. zadziała to w wersji 10.7.x, ale 10.6 zawiera informacje o elementach.

Przyciski (listy rozwijane) w arkuszu wydruku mają opis opisujący funkcję.

W Inspektorze dostępności ; widać to po najechaniu myszką na element (przycisk). możesz zablokować widok Inspektora dostępu za pomocą cmd + F7.

Opis zostanie wyświetlony jako AXDescription

wprowadź opis zdjęcia tutaj

W przypadku drukarek jest to Drukarki dla ustawień wstępnych, to jest Ustawienia wstępne

Jeśli znasz AXDescription , możesz uniknąć liczb, używając czegoś takiego. Ale to nie jedyny sposób. Tylko jeden przykład.

activate application "Preview"
tell application "System Events"
    tell process "Preview"
        click ((pop up buttons of sheet 1 of window 1) whose description is "Printers")
    end tell
end tell

Aby powyższe zadziałało w tym przykładzie, arkusz wydruku musi być widoczny wraz z „Pokaż szczegóły”

Przycisk / menu rozwijane ma menu. Więc można wybrać lub kliknij go, odwołując się do elementów menu w menu przycisku.

Albo według numeru, albo przy użyciu jego tytułu / AXTitle.

activate application "Preview"
    tell application "System Events"
        tell process "Preview"
            click ((pop up buttons of sheet 1 of window 1) whose description is "Presets")

click menu item "Last Used Settings" of menu of ((pop up buttons of sheet 1 of window 1) whose description is "Presets")
        end tell
    end tell

Możesz skrócić powtarzalny kod, używając zmiennej dla przycisku i wywołując go. Gdy robię to tak, jak mój przykład poniżej;

   activate application "Preview"
tell application "System Events"
    tell process "Preview"
        set Presets_button to item 1 of ((pop up buttons of sheet 1 of window 1) whose description is "Presets")

        click Presets_button
        click menu item "Last Used Settings" of menu of Presets_button
    end tell
end tell
markhunte
źródło
4

Dla tych, którzy zastanawiają się, wydaje się, że jednym z miejsc, w którym można znaleźć Inspektora Dostępności w wersji 10.7, jest:

/Applications/Xcode.app/Contents/Applications

Arnaud P.
źródło
1

Niedawno napisałem swój przepływ pracy dla skryptów interfejsu użytkownika w AppleScript .

Krótko mówiąc, kluczowym składnikiem, który znacznie ułatwił mi zadanie, było nauczenie się, że UI Elementspolecenie w AppleScript zwraca listę terminów, które Edytor AppleScript chce zobaczyć w celu wywołania elementów interfejsu użytkownika. Połącz to z warunkami widocznymi z Inspektora dostępności (które często są nieco inne), aby zbudować działający skrypt.

n8henrie
źródło