单击带有Applescript的JavaScript/jQuery链接

1 javascript applescript

我从来没有对AppleScript做过多少工作,但我正在尝试自动化这个过程.我有一个需要点击按钮的网站.但是按钮是用JavaScript/jQuery/AJAX实现的,如下所示:

<div id="divIdOfButton" class="someClass">
    <div class="divClassOfButton someOtherClass">
        <img src="imgOfButton">
    <div>

...

<script type="text/javascript">

$(document).ready(function() {
$('#divIdOfButton .divClassOfButton).click(function() {
...
}}
Run Code Online (Sandbox Code Playgroud)

我没试过就试过这个

tell application "Safari"
    activate
    delay 1
    set URL of first document to "http://example.com/"
    do JavaScript "document.getElementById('divIdOfButton').getElementByClassName('divClassOfButton')[0].click()" in front document
end tell
Run Code Online (Sandbox Code Playgroud)

我做了一堆搜索,但找不到任何东西.非常感谢一些帮助.

kop*_*hke 5

大多数浏览器都会忽略对click事件处理程序的直接调用,看起来(显然出于安全原因 - 不要让我开始使用浏览器中的JavaScript安全模型),所以你的click()调用根本就什么都不做.您可以通过JavaScript的事件调度机制触发click事件(请参阅我的问题答案).但是,如果您定位的站点已经包含jQuery,那么您需要做的就是:

tell application "Safari"
    do JavaScript "$('#divIdOfButton .divClassOfButton').click();" in front document
end tell
Run Code Online (Sandbox Code Playgroud)

如果你的班级有几个按钮DIV,你需要添加一个过滤表达式,即

tell application "Safari"
    do JavaScript "$('#divIdOfButton .divClassOfButton :equ(0)).click();" in front document
end tell
Run Code Online (Sandbox Code Playgroud)

但如果querySelectorAll没有这个,你将失去jQuery利用的性能优势(参见jQuery API文档).

通过触发Safari中Stack Overflow站点的收件箱下拉列表进行测试.