捕获Selenium WebDriver中的JavaScript错误–;浏览器独立
我想知道是否有人可以扩展这些尝试,或者有任何其他想法来使用WebDriver捕获JS错误,这些WebDriver将在Firefox、Chrome、Internet Explorer和Safari中工作 以下是迄今为止的尝试:捕获Selenium WebDriver中的JavaScript错误–;浏览器独立,java,selenium-webdriver,Java,Selenium Webdriver,我想知道是否有人可以扩展这些尝试,或者有任何其他想法来使用WebDriver捕获JS错误,这些WebDriver将在Firefox、Chrome、Internet Explorer和Safari中工作 以下是迄今为止的尝试: 尝试–问题: JSErrorCollector.jar-工作正常,但只是Firefox的解决方案 将JS注入到页面源代码中–我使用WebDriver将window.onerror代码注入到页面的源代码中,但是由于注入太晚,因此没有出现任何初始错误 BrowserMob–我可
尝试–问题: JSErrorCollector.jar-工作正常,但只是Firefox的解决方案 将JS注入到页面源代码中–我使用WebDriver将
window.onerror
代码注入到页面的源代码中,但是由于注入太晚,因此没有出现任何初始错误
BrowserMob–我可以截获HTTP响应,并计划将窗口.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()
感谢您的帮助。我不知道有什么方法可以通过测试框架直接捕获Javascript代码错误。如果让我猜的话,我会用。或者,也许类似的东西会起作用 作为旁注,如果您使用单独的节点运行Selenium2 Grid Hub,您可以像这样将Java选项传递给节点的JVM,这将允许代理通过Fiddler工作。Fiddler侦听(默认情况下)端口8888。使用此方法,您可以查看数据包
:: batch script: Set JAVA_OPTS java options to JVM
SET "JAVA_OPTS=-Dwebdriver.chrome.^
driver=%CHROMEDRIVER%"
IF "%PROXY_TO_FIDDLER%"=="true" SET "JAVA_OPTS=%JAVA_OPTS% -DproxySet=true^
-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8888"
我创造了。在我看来,您还可以使用此方法与端口8080上的BrowserMob代理进行通信?我没有尝试过。据我所知,您列出了当前可用的所有可能的解决方案(2013年7月,Selenium 2.33.0)。在出现任何官方API之前,您必须混合使用这些解决方案,或者为您需要支持的每个浏览器编写自己的浏览器插件。您意识到BrowserMob代理是正确的,对吗?是什么阻止了你实现缺少的功能和提交拉取请求?没什么,嗯,也许我知道:p我有时间限制,但如果这是我唯一的选择,那么我肯定可以尝试。感谢您的动机。Browsermob代理尚未覆盖BrowserMobHttpResponse的getBody方法。它返回null。因此无法添加我们自己的javascript。我现在正在使用Fiddler查看数据包,但我没有网格设置。我会调查你的代码。谢谢你的回答/代码。我想页面源代码不会在网格中心和节点之间传递。节点实例上遇到Javascript错误的每个web浏览器会话都位于其自己的沙箱中。在我看来,您使用JQuery注入的想法似乎是实现这一点的唯一方法,但我知道您说过,它没有足够早地捕获错误。我是在推理,但也许您可以在iFrame包装器测试页面框架中加载页面,该框架预加载jquery并控制/监视页面在其iFrame中的加载?在这种情况下,您的测试驱动程序必须进行切换才能进入帧。