Applescript / Javascript 无法填写 Safari 输入框

3
我已将Safari主页设置为带有用户名和密码表单的URL。我的脚本应该打开Safari并将用户名设置为一个值。该脚本会打开Safari,显示主页,但不会向输入框添加任何文本。
tell application "Safari"
    activate
    tell window 1
        delay 3
        do JavaScript "document.getElementById('username').value = 'hello';"
    end tell
end tell

<input type="text" name="username" id="username" size="20" style="width: 150px;">

有人可以建议为什么吗?

1个回答

0

你需要告诉 Safari 在哪里,例如 窗口 n 的标签页 n 或者 文档 n 等等。

示例 AppleScript 代码:

tell application "Safari"
    tell current tab of window 1
        do JavaScript "document.getElementById('username').value = 'TheCoder';"
    end tell
end tell

或者:

tell application "Safari"
    do JavaScript "document.getElementById('username').value = 'TheCoder';" in document 1
end tell



注意:此处的示例AppleScript代码仅供参考,不包含任何适当的错误处理。用户需要自行添加适当、必要或想要的错误处理。请查看try语句error语句以及AppleScript语言指南。另外,在事件之间可能需要使用delay命令,例如delay 0.5,并适当设置延迟


请不要在输入框中放置文本。 - TheCoder
因为您提供的HTML元素不包含“value”键。应该使用其他HTML元素,如:**<input name="login" type="hidden" id="login" value="submit">**。找到类似的HTML元素并与其一起使用。要查找,请右键单击登录文本字段并使用检查元素。 - Robert Kniazidis
@TheCoder,回复:“不要在输入框中放置文本。”--他们在我测试的_input box_上放置了文本,并且没有指定tab n of window ndocument n,这也是你在问题中没有提到的。然而,如果无法打开确切的URL以便自己进行源代码调查和测试,那么我认为问题不在我的答案中的_example_ AppleScript _code_,而是在你所针对的内容上。另一个评论中有相关信息可供您排除故障,然后按照我的答案所示应用它。 - user3439894
@user3439894 当我在JavaScript命令运行之前添加了3秒的延迟,你的代码就可以正常工作了。看起来是因为命令在HTML渲染之前就已经执行了。 - TheCoder
@TheCoder,这永远不会失败......如果我像往常一样没有添加免责声明,那么肯定会有“延迟”_命令_问题。所以我现在已经事后添加了它。很高兴你能让代码对你起作用。 - user3439894

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接