Как получить доступ к тексту определенной строки элемента управления структурой с помощью AppleScript?

Я пытаюсь выбрать конкретную строку схемы с помощью AppleScript на основе ее текста.

Вот что я рассматриваю (но не работает):

repeat with aRow in rows of outline 1 of scroll area 1 of splitter group 1 of window 1
    set t to text of cell of aRow
    if t starts with "some text" then select aRow
end repeat

Проблема в том, что text of cell of aRow не разрешается так, как я думаю, должно. Я использовал инспектор специальных возможностей, чтобы подтвердить иерархию объектов. Я пытался использовать «Элементы пользовательского интерфейса» в строке, чтобы увидеть, какие элементы доступны, но это не возвращает ничего полезного. Так что я не в курсе! Что мне не хватает?


person ptrico    schedule 25.05.2013    source источник
comment
Э... для какого приложения...   -  person markhunte    schedule 25.05.2013
comment
Один я разрабатываю. Я использую AppleScript для автоматического тестирования пользовательского интерфейса. Я новичок в AppleScript, зачем это нужно?   -  person ptrico    schedule 25.05.2013
comment
Потому что это помогает, если мы можем попытаться получить доступ к схеме самостоятельно. Не все приложения предоставляют вам доступ к информации, как вы ожидаете. Как ваш разработчик, вы должны иметь возможность давать имена объектам и вводить любую соответствующую информацию самостоятельно. Но я не пробовал это сам.   -  person markhunte    schedule 25.05.2013
comment
Кстати, если вы его разрабатываете. Для вас может быть лучше сделать его скриптовым, а не заставлять пользователей возиться с графическим интерфейсом. взгляните на developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ и developer.apple.com/library/mac/#technotes/tn2002/tn2106.html   -  person markhunte    schedule 25.05.2013


Ответы (2)


С помощью подсказки @markhunte я понял, как добраться до текста строки в схеме, используя UI Elements и get properties. Оказывается, иерархия AXRow > AXCell > AXStaticTexthierarchy, отображаемая инспектором специальных возможностей, вводит в заблуждение.

Текст каждого из них доступен через name of first UI Element of row (of outline...).

Вот рабочий код, который делает то, что я намеревался достичь:

tell application "System Events"
    tell process "MyApp"

        repeat with aRow in row of outline 1 of scroll area 1 of splitter group 1 of window 1
            if name of first UI element of aRow starts with "Schedule" then select aRow
        end repeat

    end tel
end tell
person ptrico    schedule 25.05.2013

Я думаю, что вам не хватает статического текста.

Вот пример с iTunes.

    tell application "System Events"
        tell process "iTunes"

            --  get properties of every static text in rows of outline 1 of scroll area 1 of splitter group 1 of window 1

            get properties of first static text in rows of outline 1 of scroll area 1 of splitter group 1 of window 1 whose description is "sources"
            get properties of first static text in rows of outline 1 of scroll area 1 of splitter group 1 of window 1 whose name is "LIBRARY"
            get properties of first static text in rows of outline 1 of scroll area 1 of splitter group 1 of window 1 whose value is "Spanish"


        end tell
    end tell
person markhunte    schedule 25.05.2013
comment
Спасибо, Марк, вы поставили меня на правильный путь, показав мне материал для получения свойств. Фактический ответ немного отличается, потому что инспектор специальных возможностей ввел меня в заблуждение. Подробнее в моем ответе. Спасибо еще раз! - person ptrico; 25.05.2013
comment
Рад, что это помогло. Прошло много времени с тех пор, как я играл со сценариями GUI, забыл большую часть этого. Не мой любимый. - person markhunte; 25.05.2013