Rya*_*yan 12 java selenium-webdriver
我想知道是否有人可以扩展任何这些尝试或有任何其他想法使用可在Firefox,Chrome,Internet Explorer和Safari中使用的WebDriver捕获JS错误.
以下是到目前为止所尝试的内容:
尝试 - 问题:
JSErrorCollector.jar - 工作正常,但只是Firefox的解决方案.
将JS注入页面源 - 我window.onerror使用WebDriver 将代码注入到页面的源代码中,但由于注入太晚而错过了任何初始错误.
BrowserMob - 我可以拦截HTTP响应并计划将window.onerror代码注入响应主体,但作者还没有实现该getBody()方法,所以只有头文件可以修改,我知道.对于所有响应,正文始终为null.(我在一个网页上,作者谈到了实施,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 代码错误。如果我猜的话,我会使用PhantomJS。或者,像MITM Proxy这样的东西也许可以工作?
顺便说一句,如果您使用单独的节点运行 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"
Run Code Online (Sandbox Code Playgroud)
我创建了您可以在此处启动网格和节点的脚本。在我看来,您还可以使用此方法与端口 8080 上的 BrowserMob 代理进行通信?我还没有尝试过。
| 归档时间: |
|
| 查看次数: |
5003 次 |
| 最近记录: |