gpt4 book ai didi

java - 在 Selenium WebDriver 中捕获 JavaScript 错误——独立于浏览器

转载 作者:搜寻专家 更新时间:2023-10-30 21:12:59 24 4
gpt4 key购买 nike

我想知道是否有人可以扩展这些尝试中的任何一个,或者有任何其他想法来使用可在 Firefox、Chrome、Internet Explorer 和 Safari 中运行的 WebDriver 捕获 JS 错误。

以下是目前已经尝试过的:
尝试 – 问题:

JSErrorCollector.jar - 工作正常,但仅适用于 Firefox 解决方案。

将 JS 注入(inject)页面源代码 – 我使用 WebDriver 将 window.onerror 代码注入(inject)到页面的源代码中,但由于注入(inject)太晚而遗漏了任何初始错误。

BrowserMob – 我可以拦截 HTTP 响应并计划将 window.onerror 代码注入(inject)响应主体,但作者尚未实现 getBody( ) 方法,所以我知道只能修改标题。对于所有响应,正文始终为 null。 (我在一个网页上,作者说要实现 getBody() 但它还没有发生,我找不到了)

Fiddler – JS 将正确注入(inject),但 Fiddler 仅适用于 Windows,因此 Safari 无法运行。

父/子窗口 – 我使用 javascript 打开和存储对测试页窗口的引用。 window.onerror 代码 包含在父窗口中,因此它不会错过子窗口中的启动错误。除了 Firefox 和 Chome 之外,我无法让它在任何地方工作。我已经问过一个问题了here .

Selenium RC – 我没有尝试过,因为我所有的测试都使用 WebDriver,但我知道它有某种方法,如 captureNetworkTraffic(),但我不知道'认为它可以在 WebDriver 中使用。

IE 错误弹出窗口 – 我打算使用 Firefox/Chrome 的父/子解决方案,然后寻找 IE 错误弹出窗口。当检查设置以显示时,将显示此弹出窗口。弹出窗口是原生 Window 窗口(我认为),因此我无法使用 selenium 访问它。

阅读浏览器控制台 – 我找不到在所有浏览器中执行此操作的方法。在 Chrome 中,我找到了一种将控制台日志保存到文件然后读取该文件的方法。据我所知。

我想要一个类似于 BrowserMob 的解决方案,因为它看起来像是一个跨浏览器解决方案。是否有任何其他代理可以放入测试并拦截响应?如果实现了 getBody() 方法,那就太好了。我也喜欢父/子解决方案,因为它看起来也是一个简单的跨浏览器解决方案,但它不适用于 IE ( parent/child question again)。

感谢您的帮助。

最佳答案

我不知道有什么方法可以通过测试框架直接捕获 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"

我创建了 scripts you can use to start your grid and node here .在我看来,您也可以使用这种方法与端口 8080 上的 BrowserMob 代理通信吗?我没试过。

关于java - 在 Selenium WebDriver 中捕获 JavaScript 错误——独立于浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17555902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com