模拟网络浏览器
Posted
技术标签:
【中文标题】模拟网络浏览器【英文标题】:Emulating a web browser 【发布时间】:2010-04-06 18:49:07 【问题描述】:我们的任务基本上是模拟浏览器来获取网页,并希望在不同的网页上自动进行测试。这将用于(理想情况下)在后台运行并生成报告的控制台式应用程序。
我们尝试使用 .NET 和 WatiN 库,但它是基于 Marshalled IE 构建的,因此它缺乏许多我们通过调用非托管本机代码侵入的功能,但归根结底 IE 不是线程安全也不是进程安全,而且许多需要的功能只能通过更改注册表值来实现,而且非常不灵活。
代理支持 javascript 支持 - 我们必须能够在任何 javascript 执行后解析实际的 DOM(并希望引发一个事件来处理任何 ajax 调用) 能够将页面的全部内容(包括已加载页面缓存中的图像)保存到单独的位置 能够清除 cookie/缓存、获取 cookie/缓存等。 能够为任何浏览器调用设置标题和更改发布数据 进程和/或线程安全将是理想的 对于 drogs 的热爱,一个并不完全神秘的 API可接受的语言 C++、C#、Python,任何可以是简单的小后台应用程序的语言,在某种程度上可以忍受,并且没有像 Ruby 那样完全“非传统”的语法。
根据我自己的研究,相信我在 google 搜索方面很糟糕,我听说过关于 WebKit 的好消息... Qt 模块 QtWebKit 会处理所有这些吗特点?
【问题讨论】:
我不太了解它是否会有所帮助,但是在 VS 2010 的某些版本中,有一些称为“手动测试”的东西可以让您记录与网页的交互。然后,您可以深入研究代码并自动化测试,据说我被告知它记录的内容是在 http 级别。因此,您的测试代码将在相当低的水平上运行。我不知道生成的代码可能有多混乱。 您不需要对 IE 进行真正的注册更改;您可以告诉 IE 使用替代根目录。 【参考方案1】:您可以尝试以下方法之一:
http://code.google.com/p/spynner/
http://code.google.com/p/pywebkitgtk/
【讨论】:
【参考方案2】:我知道你提到你不喜欢 Ruby 语法(我也不喜欢),但我不得不插嘴说 Watir 可能是你想要做的最好的事情。
编辑:似乎有一个 Java 对应部分,称为 Watij
【讨论】:
是的,这就是我们所看到的,但我们已经落后于截止日期,无法学习语法,更不用说客户端的部署问题了。我们需要一个在今天的加班状态下准备好的临时解决方案。我猜 Ruby 可能会被编译成一个独立的 exe,如果没有别的,我们可能最终不得不使用 Watir。 “目前 Watij 仅支持 Windows 上的 Internet Explorer 自动化。未来计划支持其他公司,如 Mozilla。” - 是的,建立 IE 注定要失败! >. @Sean Ha,我没注意到【参考方案3】:我自己最近才开始研究这个,所以我不能说这可以满足你列出的所有问题,但请查看 GeckoFx。
来自网站:GeckoFX 是一个开源组件,它可以轻松地将 Mozilla Gecko (Firefox) 嵌入到任何 .NET Windows 窗体应用程序中。 GeckoFX 用干净、完整注释的 C# 编写,是默认的基于 Internet Explorer 的 WebBrowser 控件的完美替代品。
至于我自己的印象:它在性能和稳定性上都超过了默认的 .NET WebBrowser。
【讨论】:
以上是关于模拟网络浏览器的主要内容,如果未能解决你的问题,请参考以下文章