使用applescript监控网页

时间:2014-04-24 06:46:21

标签: applescript

所以我试图看一个网页,当输入表格出现时,我需要输入我的名字。我想出了这个,但显然不正确。

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

1 个答案:

答案 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中执行整个脚本更容易,因为您应该能够设置值并在那里提交表单。