我有一个生成xml文件的程序。我需要使用xml数据填写网站上的表格。 (然后使用循环多次执行此操作)。 根据我迄今为止所做的研究,听起来这样做的方法是让imacros在浏览器中打开xml文件,然后抓取数据,然后打开Web表单并填写它。
现在,所有适合一个脚本的内容如何?一个脚本可以读取数据然后用它来填写表单吗?
我也研究过autohotkey,但它似乎比imacros复杂得多 - 有没有人对什么更适合这项任务有意见?
如果有人能指出我正确的方向,我将不胜感激。谢谢!
(如果有人要求,我考虑跳过表单并使用curl发布数据,但事实证明它太复杂了。它是一个政府网站,使用servlet验证信息,我放弃了。)
答案 0 :(得分:0)
听起来这样做的方法是让imacros在浏览器中打开xml文件,然后刮掉数据,
据我所知,iMacros无法在浏览器中抓取XML数据,但这也不是必需的。最好的方法是通过脚本(VBS,Python,...)读取XML,然后使用iMacros 脚本接口将其发送到Web浏览器。以下示例几乎完全符合您的要求:http://wiki.imacros.net/XML-2-Web.vbs
请注意,此API仅适用于商业iMacros Enterprise版本。或者,您可以使用Kantu浏览器,它具有免费的browser api。如果一些更复杂的编程是可以的,表单填充的其他选项是Selenium / WebDriver甚至是PhantomJS。
然后打开网络表单并填写。
正确。表单填充部分由宏本身完成,使用脚本中的iimSet和TAG .... CONTENT = {{your_variable}}在宏中。
答案 1 :(得分:0)
也许这个如何在' iMacros for Firefox'下抓取XML数据的例子。对你有所帮助:
URL GOTO=http://www.xmlfiles.com/examples/simple.xml
SEARCH SOURCE=REGEXP:"([\\s\\S]*)" EXTRACT=$1
PROMPT {{!EXTRACT}}
无论如何,我相信您应该应用JavaScript Scripting Interface才能成功完成此任务。
答案 2 :(得分:0)
AutoHotkey是此任务的不错选择。更具体地说,您希望使用COM对象访问XML数据,并使用Internet Explorer COM对象将信息粘贴到您的网站。
XML COM示例:
exampleXML :=
(
"<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>"
)
doc := ComObjCreate("MSXML2.DOMDocument.6.0")
doc.async := false
doc.loadXML(exampleXML)
MsgBox % doc.selectSingleNode("//from").text "`n"
. doc.selectSingleNode("//body").text
IE COM示例:
pwb := ComObjCreate("InternetExplorer.Application")
pwb.Visible := True
pwb.RegisterAsBrowser := true
pwb.Navigate("www.w3schools.com/html/html_forms.asp")
While pwb.Busy
Continue
Sleep 3000
pwb.document.getElementsByClassname("w3-white w3-padding notranslate")[0]
.getElementsByTagname("input")[0].innertext := "Daffy"
pwb.document.getElementsByClassname("w3-white w3-padding notranslate")[0]
.getElementsByTagname("input")[1].innertext := "Duck"
MsgBox % "Ok to exit"
PWB.Quit()