我使用一个自动化脚本来测试基于浏览器的应用程序。我想将加载的每个页面的可见文本保存为文本文件。这需要适用于当前打开的浏览器窗口。我遇到了一些使用的解决方案,InternetExplorer.Application
但这对我不起作用,因为它必须是当前打开的页面。
理想情况下,我想使用 vbscript 来实现这一点。任何想法如何做到这一点?
您可以像这样附加到已经运行的 IE 实例:
Set app = CreateObject("Shell.Application")
For Each window In app.Windows()
If InStr(1, window.FullName, "iexplore", vbTextCompare) > 0 Then
Set ie = window
Exit For
End If
Next
然后像这样保存文档正文:
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("output.txt", 2, True)
f.Write ie.document.body.innerText
f.Close
如果页面包含非 ASCII 字符,您可能需要使用 Unicode 编码创建输出文件:
Set f = fso.OpenTextFile("output.txt", 2, True, -1)
或将其保存为 UTF-8:
Set stream = CreateObject("ADODB.Stream")
stream.Open
stream.Type = 2 'text
stream.Position = 0
stream.Charset = "utf-8"
stream.WriteText ie.document.body.innerText
stream.SaveToFile "output.txt", 2
stream.Close
编辑:这样的事情可能有助于摆脱文档正文中的脚本代码:
Set re = New RegExp
re.Pattern = "<script[\s\S]*?</script>"
re.IgnoreCase = True
re.Global = True
ie.document.body.innerHtml = re.Replace(ie.document.body.innerHtml, "")
WScript.Echo ie.document.body.innerText