2014-05-13 55 views
1

自从我上大学的日子以来,我还没有做过任何真正的编程,甚至当时,它是fortran和pascal(是的,我约会自己...),所以applescript和javascript对我来说很陌生,我可能会跳到最后,但为什么不呢,对吧?自动填充javascript/applescript accuweather(noob)

我目前正在寻找在美国各地城市的工作,我认为这将是一个很好的学习机会(和一个项目,以保持我的头脑锐利),以“自动化”添加新的过程并与各种人力资源/招聘经理进行对话,利用天气作为破冰之旅。您可以在accuweather email alerts注册Accuweather电子邮件提醒,这似乎是一个不错的功能。

我在为邮政编码赋值时遇到了困难,我无法弄清楚我做错了什么。当我检查的网站,我看到以下内容:

<input name="wxzip" type="text" value="" style="width:60px;font-size:12px; 
color:#444444;border:1px solid #000000" onchange="verifyZip(); 
" id="userZipSelection"> 

我试过在AppleScript的下列方法来设置使用的JS代码片段的邮政编码值。

do JavaScript "document.getElementById('userZipSelection').value = 60015;" in document 1 
do JavaScript "document.getElementsByName('wxzip')[0].value = 60015" in document 1 
do JavaScript "document.getElementsById('userZipSelection')[0].value = 60015;" in document 1 
do JavaScript "document.regform.wxzip.value = 60015;" in document 1 

这些在设置邮政编码时似乎都不起作用。顺便说一句,在最终形式,我会从列表中获取邮政编码,但为了简单起见,我直接在此示例中设置值。

在网站上的代码中,有很多其他地方的邮政编码参考,但我不明白所有其他用途。例如:

if (document.regform.wxzip.value.length != 5) 

我将非常感谢任何/所有建议我做错了w/r/t设置邮政编码的值。

谢谢。



从下面adayzdone的帮助下,我已经摸索我的方式来解决。这是最后的工作代码:

tell application "Safari" 
    activate 
    open location "[email protected]@[email protected]://www.accuweather.com/alerts/index.asp" 
    delay 3 
    tell current tab of window 1 
     do JavaScript "document.getElementById('userZipSelection').value=12345" 
     do JavaScript "document.getElementsByName('email')[0].value = '[email protected]'" 
     do JavaScript "document.getElementsByName('getforecast')[0].checked = true" 
     do JavaScript "document.getElementsByName('getsevere')[0].checked = true" 
     do JavaScript "document.getElementsByName('format')[0].value = 'html'" 
     do JavaScript "document.getElementsByName('getupdates')[0].checked = true" 
     do JavaScript "document.getElementsByName('hours1')[0].value = 10" 
     do JavaScript "document.getElementsByName('hours2')[0].value = 19" 
     do JavaScript "document.getElementsByName('days')[1].checked = true" 
     do JavaScript "document.getElementsByName('days')[2].checked = true" 
     do JavaScript "document.getElementsByName('days')[3].checked = true" 
     do JavaScript "document.getElementsByName('days')[4].checked = true" 
     do JavaScript "document.getElementsByName('days')[5].checked = true" 
     do JavaScript "document.getElementsByName('days')[6].checked = true" 
     do JavaScript "document.getElementsByName('days')[0].checked = true" 
     do JavaScript "document.regform.submit()" 
    end tell 
end tell 

看来问题是与添加“窗口1的当前选项卡”位有关。谁能解释为什么这解决了我的问题?

现在我只需要将所有内容都更改为一个我可以更容易地更改以完成项目的变量。

+0

我尝试的第一个和它的工作。当你运行代码时,你确定accuweather.com是最前面的safari选项卡吗? – user309603

+0

User309603,是的,您是对的,第一个在运行时不会导致错误,但是我没有看到在Web表单中出现邮政编码。我应该不能看到它的工作? – user3630321

+0

我可以立即看到它。 Safari中可能有一个奇怪的安全设置。尝试在Chrome/Iron中运行脚本。 – user309603

回答

0

这对我的作品......

tell application "Safari" 
    tell current tab of window 1 
     do JavaScript "document.getElementById('userZipSelection').value='12345'" 
    end tell 
end tell 
+0

感谢adayzdone,但为什么我看不到邮政编码出现在网络表单中? – user3630321

+0

adayzdone,你知道了,它是“窗口1的当前选项卡”使事情发挥作用的东西。这是工作代码。 – user3630321

+0

为什么添加“当前窗口1的选项卡”解决了我让代码工作的问题? – user3630321