1

我对 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() {
...
}}

我试过这个没有任何运气

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

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

4

3 回答 3

5

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

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

如果您的 类中有多个按钮,则DIV需要添加过滤器表达式,即

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

但是如果没有这个,您将失去querySelectorAlljQuery 所利用的性能优势(请参阅jQuery API 文档)。

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

于 2012-04-13T14:53:51.507 回答
1

我会查看UI 浏览器,它非常适合这类事情,我一直都在使用它。

于 2012-11-09T17:00:47.550 回答
-1

我不是 Applescript 用户,但我可以马上告诉你getElementByClassName应该是getElementsByClassName- 复数形式的“元素”。

于 2012-04-13T14:29:12.580 回答