Могу ли я автоматизировать клик по этой ссылке, используя applecript? - PullRequest
0 голосов
/ 22 сентября 2019

Я пишу Applescript для автоматизации четырех кликов на странице "Organizr" для одного из моих альбомов Flickr, чтобы изменить порядок моих фотографий.Три ссылки имеют идентификаторы, поэтому автоматизировать эти клики легко.Например:

clickID3("comm_button_ok")
to clickID3(theId3)
tell application "Safari"
    do JavaScript "document.getElementById('" & theId3 & "').click();" in document 1
end tell
end clickID3

Это работает!

Но как мне автоматизировать нажатие на эту ссылку?

<a href="#" onclick="_ge('tabl').tabl_get_active_one_set_mat().mat_resort('random'); return false;">Randomly</a>

Вот полный пакет кода от Flickr Organizrстраница для меню, на котором находится ссылка:

<div class="candy_menu" id="candy_set_menu_arrange" style="display: block;">
<a href="#" onclick="_ge('tabl').tabl_get_active_one_set_mat().mat_resort('date-taken-asc'); return false;">Arrange by date taken (oldest first)</a>
<a href="#" onclick="_ge('tabl').tabl_get_active_one_set_mat().mat_resort('date-taken-desc'); return false;">Arrange by date taken (newest first)</a>
<a href="#" onclick="_ge('tabl').tabl_get_active_one_set_mat().mat_resort('date-posted-asc'); return false;">Arrange by date uploaded (oldest first)</a>
<a href="#" onclick="_ge('tabl').tabl_get_active_one_set_mat().mat_resort('date-posted-desc'); return false;">Arrange by date uploaded (newest first)</a>
<a href="#" onclick="_ge('tabl').tabl_get_active_one_set_mat().mat_resort('title'); return false;">Alphabetically</a>
<a href="#" onclick="_ge('tabl').tabl_get_active_one_set_mat().mat_resort('random'); return false;">Randomly</a>
<a href="#" onclick="_ge('tabl').tabl_get_active_one_set_mat().mat_resort('reverse'); return false;">Reverse current order</a>
</div>

Я знаю, как автоматизировать щелчок, чтобы открыть меню candy_set_menu_arrange.Но как мне автоматизировать нажатие кнопки «Случайно»?

1 Ответ

1 голос
/ 22 сентября 2019

Тег элемента anchor имеет атрибут события onclick, который точно сообщает, что происходит при нажатии элемента.Поэтому, поскольку вы не можете самостоятельно выполнить щелчок, вы должны просто перенаправить инструкции из атрибута onclick (который является кодом JavaScript) прямо на вкладку Safari :

tell application "Safari" to tell the front document to do JavaScript ¬
    "_ge('tabl').tabl_get_active_one_set_mat().mat_resort('random'); return false;"

В противном случае вы всегда можете нацелить элемент, используя метод querySelector(), который намного мощнее, чем getElement...() методы.Я дам вам прочитать документацию, на которую я ссылался, для обзора того, что она делает, а затем вы можете обратиться к Справочнику по выбору CSS всякий раз, когда вам нужно пробежатьсяпамять на определенный синтаксис для таргетинга элементов различными возможными способами.Способ, который я собираюсь продемонстрировать, как один из возможных способов нацеливания на эту привязку, различает ее атрибут onclick, содержащий слово "random", возвращая первый элемент привязки, удовлетворяющий этому условию:

document.querySelector('a[onclick*="random"]').click();
...