我正在编写一个Applescript,以自动完成对我的一张Flickr相册的“ Organizr”页面上的四次单击,以更改照片的顺序。其中三个链接具有ID,因此自动实现这些点击很容易。例如:
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
菜单。但是,如何自动点击“随机”呢?
答案 0 :(得分:1)
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 Selector Reference。各种可能的方式。我将以一种可能的方式来演示,您可以根据该锚点的onclick
属性包含单词"random"
来区分该锚点,并返回第一个锚点元素以满足以下条件:>
document.querySelector('a[onclick*="random"]').click();