Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript单击按钮_Javascript_Safari_Applescript - Fatal编程技术网

使用Javascript单击按钮

使用Javascript单击按钮,javascript,safari,applescript,Javascript,Safari,Applescript,我制作了一个AppleScript来访问网页并登录。嗯,在某个时候我需要点击一个按钮来确认我的投票。 下面是我在按钮上看到的内容: <form method="post" action="/website/in/16"> <input type="submit" name="valid" value="Valider mon vote" class="btn btn-default" /> 点击链接进行投票会将一个网页打开到现有网页中,这会改变我的问题吗?您必须指定

我制作了一个AppleScript来访问网页并登录。嗯,在某个时候我需要点击一个按钮来确认我的投票。 下面是我在按钮上看到的内容:

 <form method="post" action="/website/in/16">
 <input type="submit" name="valid" value="Valider mon vote" class="btn btn-default" />

点击链接进行投票会将一个网页打开到现有网页中,这会改变我的问题吗?

您必须指定JavaScript应该在其中评估的文档

do JavaScript "document.readyState" in document 1
现在,它在最前面窗口的最前面选项卡中进行计算。 一个安全的方法是这样的:

tell application "Safari"
    do JavaScript "document.getElementsByName('valid').click();" in item 1 of (every tab of every window whose URL starts with "http://www.votepage.com/")
end tell

现在,即使选项卡位于后台(或者Safari不是最前端的应用程序),它也可以工作。

看起来确实需要指定选项卡,尽管Safari的AppleScript字典建议选项卡规范是可选的(从OS X 10.9.2开始)。感谢您的提示和更正。我已经更新了。事实上,我同意你的看法。:)字典声明您将目标指定为选项卡对象,但似乎您也可以使用文档对象。然而,字典还声明选项卡规范是可选的,这在现实中并不正确。考虑到没有选项卡规范的命令会编译并完全以静默方式失败,我猜这是一个bug,其目的是默认情况下在前窗口的当前选项卡中执行。
tell application "Safari"
    do JavaScript "document.getElementsByName('valid').click();" in item 1 of (every tab of every window whose URL starts with "http://www.votepage.com/")
end tell