AppleScript или Automator для нажатия на меню в приложении?

Просто установите .closed на display: inline; или display: inline-block;

.content {}

.pending {}

.closed {
  position: relative;
  display: inline-block;
}

.closed::before {
  position: absolute;
  content: "";
  left: 0;
  top: 50%;
  width: 100%;
  right: 0;
  border-top: 2px solid red;
}
<div class="content pending">
  this is a text about foo
</div>

<div class="content closed">
  this is a text about bar
</div>

5
задан pnuts 2 October 2014 в 03:11
поделиться

3 ответа

Я не знаю о том, чтобы захватить массив, но это выглядит так, будто это может работать для отправки щелчков мыши и т. Д.:

Virtualinput

-1
ответ дан 14 December 2019 в 19:13
поделиться

Я часто должен создавать сценарий GUI для доступа к пункту меню в приложениях, библиотека AppleScript которых не обеспечивает прямой доступ к объектам или функциям, которые представляет пункт меню. Чтобы помочь снова использовать код, я использую переменные для приложения, меню, & имена пункта меню. Затем я просто должен заменить переменные наверху, а не выбрать имена от тела кода.

set targetApp to "app_name"
set theMenu to "menu_name"
set theItem to "menu_item_name"

tell application targetApp
    activate
    tell application "System Events"
        tell application process targetApp
            tell menu bar 1
                tell menu bar item theMenu
                    tell menu theMenu
                        click menu item theItem
                    end tell
                end tell
            end tell
        end tell
    end tell
end tell

ПОДМЕНЮ

Это немного больше принимает участие, когда существует под - & подподменю включили, поскольку пункт меню с подменю является и пунктом меню своего родительского меню И родителем меню его подменю. Обратите внимание, что текстовая переменная "theItem" используется для определения и пункта меню И меню; "targetApp" строковая переменная используется для ссылки на обоих приложение & процесс, таким образом, это сохраняет необходимость отредактировать 2 имени в 2 местах каждый при многократном использовании кода. Я использую этот сценарий для работы голосовых команд для доступа к пунктам меню быстро вместо того, чтобы иметь необходимость сказать, например, "нажмите Edit Menu"..., "нажимают Transformations"..., "нажимают Make Upper Case"... Я добавляю другую переменную для элемента подменю:

set targetApp to "app_name"
set theMenu to "menu_name"
set theItem to "menu_item_name"
set theSubItem to "sub_item_name"

tell application targetApp
    activate
    tell application "System Events"
        tell application process targetApp
            tell menu bar 1
                tell menu bar item theMenu
                    tell menu theMenu
                        tell menu item theItem
                            tell menu theItem
                                click menu item theSubItem
                            end tell
                        end tell
                    end tell
                end tell
            end tell
        end tell
    end tell
end tell

, Например:

set targetApp to "TextEdit"
set theMenu to "Edit"
set theItem to "Transformations"
set theSubItem to "Make Upper Case"

tell application targetApp
    activate
    tell application "System Events"
        tell application process targetApp
            tell menu bar 1
                tell menu bar item theMenu
                    tell menu theMenu
                        tell menu item theItem
                            tell menu theItem
                                click menu item theSubItem
                            end tell
                        end tell
                    end tell
                end tell
            end tell
        end tell
    end tell
end tell

, Если бы существует другой уровень подменю, дополнительная переменная (например, "theSubSubItem") требовалась бы, & строка в процессе Системных событий говорит, что блок имел бы другой уровень
...

                            tell menu item theItem
                                tell menu theSubItem
                                    click menu item theSubSubItem
                                end tell
                            end tell

...
, Как отмечено в другом месте в этом потоке, рекомендуется обратиться к объектам приложения & функции непосредственно каждый раз, когда они включены в API, но обращение к GUI полезно как последнее прибежище, когда API не обеспечивает прямой доступ. Оборотная сторона является сценарием GUI, может получить больше громоздкого & вероятно, придется пересмотреть с каждым обновлением приложения.

0
ответ дан 14 December 2019 в 19:13
поделиться

UI Scripting - это непостоянный зверь. Это хрупкие и часто чувствительные к многим вещам, за пределами вашего контроля, такого как неожиданные диалоги (из других приложений), изменения в системном шрифте или языке, пользовательской активности. Не говоря уже о изменениях в интерфейсе приложения через версию.

Это гораздо более надежное, чтобы использовать разговор непосредственно к приложению через API-API AppleScript. Это именно цель AppleScript. Вы всегда можете увидеть действия и данные Приложение может предоставить через AppleScript через пункт меню «Открытый словарь ...» в AppleScript Editor.app (выберите приложение, которое вы хотите скрипт в диалоговом окне файла). Вместо того, чтобы имитировать мышь, нажмите на меню, вы вызываете действие, которое пункт меню вызывает непосредственно через AppleScript.

Конечно, не все приложения имеют полный (или даже любой) APALEScript API. Excel, однако, имеет превосходный поддержку AppleScript, если это ваша цель.

Если вы действительно пытаетесь выполнить тестирование пользовательского интерфейса, я рекомендую вам начать с других вариантов:

  1. Проверить модель (аналогично сценарию модели приложения через AppleScript). На самом деле, если вы включите AppRescript API в вашем приложении, вы также можете автоматизировать тестирование этого API.
  2. Использование Toolbox Google Toolbox для Mac Дополнительные добавления устройства (или сверните собственное), чтобы программически отправить события мыши или клавиатуры в ваше приложение.
  3. Используйте Instruments.app для записи последовательности UI. Запись инструментов солидно (я не использовал функцию записи Automator), и вы также получаете все остальные вкусности инструментов.
1
ответ дан 14 December 2019 в 19:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: