我想知道是否有人可以扩展这些尝试中的任何一个,或者有任何其他想法来使用可在 Firefox、Chrome、Internet Explorer 和 Safari 中使用的 WebDriver 来捕获 JS 错误。
到目前为止,这是尝试过的:
尝试- 问题:
JSErrorCollector.jar - 工作正常,但仅是 Firefox 解决方案。
将 JS 注入到页面源代码中——我window.onerror
使用 WebDriver 将代码注入到页面的源代码中,但由于注入太迟,任何初始错误都被遗漏了。
BrowserMob - 我可以拦截HTTP响应并计划将window.onerror
代码注入响应体,但作者尚未实现该getBody()
方法,因此只能修改标题,我知道。对于所有响应,正文始终为空。(我在一个网页上,作者谈到了实现getBody()
,但还没有发生,我再也找不到了)
Fiddler – JS 将正确注入,但 Fiddler 仅适用于 Windows,因此 Safari 无法工作。
父/子窗口——我使用 javascript 打开并存储对测试页面窗口的引用。包含在父窗口中,window.onerror code
因此它不会错过子窗口中的启动错误。除了 Firefox 和 Chome 之外,我无法让它在任何东西上工作。我已经在这里问过一个问题。
Selenium RC – 我没有尝试过,因为我所有的测试都使用了 WebDriver,但我知道它有某种方法,例如captureNetworkTraffic()
,但我认为它不能在 WebDriver 中使用。
IE 错误弹出窗口——我打算使用 Firefox/Chrome 的父/子解决方案,然后查找 IE 错误弹出窗口。当检查设置以显示它时,将显示此弹出窗口。弹出窗口是一个本机窗口窗口(我认为),所以我不能使用 selenium 来访问它。
阅读浏览器控制台——我无法在所有浏览器中找到这样做的方法。在 Chrome 中,我找到了一种将控制台日志保存到文件然后读取文件的方法。这就是我所得到的。
我想要一个类似于 BrowserMob 的解决方案,因为它看起来像是一个跨浏览器解决方案。是否有任何其他代理可以放入测试并拦截响应?如果getBody()
实施该方法,那就太好了。我也喜欢父/子解决方案,因为它看起来也是一个简单的跨浏览器解决方案,但它不适用于 IE(又是父/子问题)。
谢谢你的帮助。