所以我试图看一个网页,当输入表格出现时,我需要输入我的名字。我想出了这个,但显然不正确。
tell application "Google Chrome"
set textToType to "Peter"
repeat
if execute javascript "document.getElementById('Account_UserName') then
execute javascript "document.getElementById('Account_UserName').focus();"
keystroke textToType
keystroke return
end if
end repeat
end tell
答案 0 :(得分:0)
我用这个页面进行测试:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My Test Page</title>
<style>
body {
margin: 10em;
padding: 2em;
border: solid .2em green;
}
h1 {
text-align: center;
}
</style>
</head>
<body>
<h1>Test Page</h1>
<form action="http://www.example.com/">
<input type="text" name="Account_UserName" id="Account_UserName">
</form>
</body>
</html>
第一个问题是,为了集中注意力,Chrome似乎需要指定标签/窗口组合。因此,它不是“执行javascript”,而是“执行tabSpecifier javascript”。
第二个问题是AppleScript需要一个布尔值来检查;它似乎没有很好地处理“执行javascript”的返回值。
第三个问题是,如果没有延迟循环,AppleScript会锁定应用程序。
最后,“击键”需要包含在“系统事件”的“告诉应用程序”中。
以下是一个可以帮助您入门的示例:
set textToType to "Peter"
set fieldName to "Account_UserName"
tell application "Google Chrome"
repeat
try
--Chrome needs to have a tab to execute JavaScript in
set myTab to tab 1 of window 1
set fieldNameCheck to execute myTab javascript "nameField=document.getElementById('" & fieldName & "');nameField.name"
if fieldNameCheck is equal to fieldName then
execute myTab javascript "document.getElementById('" & fieldName & "').focus();"
--activate the window so that System Events can type into it
activate myTab
tell application "System Events"
keystroke textToType
keystroke return
end tell
end if
end try
--sleep a second between loop, or AppleScript will eventually lock up the app
delay 1
end repeat
end tell
我打开了Chrome,开始浏览网页,并开始运行此脚本;当我导航到测试页面时,它立即检测到我在那里,填写表格,并将其提交给example.com。
请注意,在现实生活中,您可能会发现使用“javascript execute”在JavaScript中执行整个脚本更容易,因为您应该能够设置值并在那里提交表单。