宏 - 你可以刮一个xml文件,然后用它填充一个Web表单?

时间:2017-01-18 07:04:27

标签: xml autohotkey imacros

我有一个生成xml文件的程序。我需要使用xml数据填写网站上的表格。 (然后使用循环多次执行此操作)。 根据我迄今为止所做的研究,听起来这样做的方法是让imacros在浏览器中打开xml文件,然后抓取数据,然后打开Web表单并填写它。

现在,所有适合一个脚本的内容如何?一个脚本可以读取数据然后用它来填写表单吗?

我也研究过autohotkey,但它似乎比imacros复杂得多 - 有没有人对什么更适合这项任务有意见?

如果有人能指出我正确的方向,我将不胜感激。谢谢!

(如果有人要求,我考虑跳过表单并使用curl发布数据,但事实证明它太复杂了。它是一个政府网站,使用servlet验证信息,我放弃了。)

3 个答案:

答案 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()