java - 在 selenium RC 中过滤 javascript XHR 调用

标签 java javascript firefox selenium selenium-rc

我用 Selenium RC 测试的应用程序遇到了一个疯狂的问题

在页面末尾,javascript 脚本对分析网络服务进行了多次调用,这实际上需要几分钟才能响应

Selenium 在转到新页面之前等待这些调用结束,尽管它们的响应与进程的良好执行无关 最终,Selenium 抛出 TimeOut Exception(超时设置为 4 分钟)

我正在使用 selenium-RC 1.0.1 和 Firefox 3.5.16

首先,我不能做什么: - 更改应用程序(我无法控制它) - 更改我的Firefox版本(涉及几台生产机器,我需要这个版本) - 使用 WebDriver/Selenium 2(出于上述原因)

我认为应该阻止 javascript 调用,但我不知道该怎么做。 - 我正在尝试使用 selenium.runScript 和 selenium.getEval 将 javascript 变量设置为 null,但设置它们时为时已晚 - 我正在使用 Gecko 的 Object.watch 方法来查看值何时更改,但没有成功

我想知道是否有一种方法可以在创建 Dom 之前通过 Selenium 过滤内容。我认为可以通过 Firefox 扩展来实现,但那将是我最不想做的事情

或者,也许可以识别页面中所有 Activity 的 XHR 并中止它

我乐于接受许多新想法

感谢阅读

常规

最佳答案

很遗憾听到更改应用程序不是一个选项 - 当我遇到类似情况(通过 ajax 调用外部分析服务)时,我用 JavaScript 为该服务编写了一个模拟,并拥有我的应用程序版本针对使用模拟运行单元测试。 (在那种情况下,我们担心的不是页面加载速度,而是通过自动测试运行来处理分析数据)这让我避免访问外部站点,但仍然在我调用的 selenium 测试中验证在适当的时间在分析站点的 javascript 库中进行正确的调用。

对于你的情况,我建议你编写一个小型 HTTP 代理(你可能会发现 this question 的答案很有用,但如果我这样做的话,我会用 Perl 或 Python 来做,因为那非常快写)接受发送到外部站点的请求,并立即以空文档或适合您情况的任何内容进行响应。 (但正常处理所有不针对分析站点的请求)

换句话说,不要试图阻止javascript直接执行或通过过滤DOM,而只是拦截缓慢的外部请求并快速响应。我建议这样做是因为拦截整个请求比过滤内容要容易得多。

然后,当您启动 selenium RC 服务器时,将它指向您的 http 代理作为上游代理。由 selenium 服务器启动的浏览器将使用 RC 服务器作为它们的代理,然后它将通过您的代理过滤所有内容。

通过这种方法,您基本上可以假装外部站点就是您想要的任何站点。

关于java - 在 selenium RC 中过滤 javascript XHR 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5910258/

相关文章:

java - 尝试使用现有的 Logger 对象,但出现 <identifier Expected> 错误?

java - 使用 BouncycaSTLe 编码 PKCS7

javascript - 如何在 Facebook 中检查特殊权限

javascript - JSprint Set Printer 共享打印机

Java:绘制乘法表的起始循环增量

java - 使用 while 和 if else 循环返回

javascript - 生成的 Foundation 6 均衡器无法均衡 [参见示例]

javascript - 需要一个优化的解决方案来获取按字母顺序排列的记录集 javascript

css - <span> float 在 <li> 内,在 FF 中创建新行,但在 Chrome 中不创建新行

javascript - focus() 函数在 Firefox 中不起作用