点击使用AppleScript
的JavaScript/jQuery的链接我没有做过太多使用AppleScript,但我想这个过程自动化。我有一个需要点击按钮的网站。然而,按钮使用JavaScript/jQuery的/ AJAX实现像这样:点击使用AppleScript
<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
我做了一堆搜寻,但没有找到任何东西。真的很感谢一些帮助。
大多数浏览器会忽略到单击事件处理程序,it seems直接调用(显然是出于安全原因 - 不要让我开始在浏览器中的JavaScript安全模型),所以你的电话click()
少了点什么都没有。您可以通过JavaScript的事件分派机制触发点击事件(请参阅this question和answer of mine)。但是,如果你已经针对网站并包括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
,但你将失去querySelectorAll
没有这个的jQuery利用性能优势(见jQuery API docs)。
通过触发在Safari堆栈溢出站点收件箱下拉菜单进行测试。
非常感谢。这正是我一直在寻找的内容:) – user500119 2012-04-13 15:43:22
声明'您无法从纯JavaScript中触发点击事件“不正确(并且与您的链接相矛盾)。您可以酌情使用* dispatchEvent *(符合W3C)或* fireEvent *(IE兼容),或者如果浏览器支持HTML5,请调用[click method](http://www.w3.org/TR/html5/editing .html#dom-click)(例如'element.click()')。这种行为不是特别一致的(例如某些版本的Firefox不会遵循链接上的综合点击),但是如果OP只关注某个特定的浏览器,则可能没有问题。 – RobG 2012-05-01 06:04:02
@RobG true,该句子不够确切 - “你不能直接在大多数浏览器中用普通的JavaScript调用点击处理程序”会更接近该标记(如此编辑)。至于HTML5支持(重新)支持这种能力,但是,这似乎是不真实的,至少目前版本的OS X上的Safari,在我的实验中,它忽略了直接调用点击处理程序。 – kopischke 2012-05-01 16:02:02
我不是一个Applescript用户,但我可以立即告诉你getElementByClassName
应该是getElementsByClassName
- 复数中的“元素”。
上面添加了完整的代码感谢Kolink,试图改变它,将不起作用.. – user500119 2012-04-13 14:53:02
无论如何,在一个适当的当前的浏览器,你会好得多使用['querySelectorAll'(http://www.w3.org/TR/selectors-api/),这是速度极快且使用CSS选择器的字符串*点菜*的jQuery但是,这不是问题 - 。参见[我的回答(http://stackoverflow.com/a/10143157/990363)了解详情 – kopischke 2012-04-13 14:56:53
与kopischke有同意 - 尤其是因为'querySelector [所有]'在mor中支持浏览器比'getElementsByClassName'。 – 2012-04-13 14:59:52
你能提供一个链接? – adayzdone 2012-04-13 14:02:40
不幸的是这是一个需要会员网站.. – user500119 2012-04-13 14:10:30
请问,如果我复制了整个$(的document.ready(....进入AppleScript的,说前面的工作文件中“做的Javascript” ...“? – user500119 2012-04-13 14:12:03