unit-testing - Selenium 等待下载?

标签 unit-testing selenium selenium-rc

我正在尝试测试happy-path的一段代码,该代码需要很长的响应时间,然后开始将文件写入响应输出流,这会在浏览器中提示下载对话框。

问题是该过程过去失败了,经过这么长时间的工作后引发了异常。 Selenium 中是否有一种方法可以转换为wait-for-download或等效方法?

我可以输入Thread.sleep,但这将是不准确的,并且不必要地减慢了测试运行的速度。

我该怎么办?

最佳答案

因此,这里有两个问题:

  • 您需要使浏览器下载文件
  • 您需要测量下载文件的完成时间

  • Selenium不能直接解决这两个问题(但是-2.0可能会有所帮助),但是两者都是可以解决的问题。第一个问题可以通过GUI自动化工具包(例如AutoIT)解决。但是,也可以通过在操作系统级别简单地发送一个模拟Enter键的自动按键来解决这些问题(适用于Firefox,在某些版本的Chrome和Safari上更难一些)。如果您使用的是Java,则可以使用Robot来做到这一点。其他语言也具有类似的工具包来执行此操作。

    第二个问题可能是使用某种代理解决方案最好地解决了。例如,如果将浏览器配置为通过代理,并且该代理具有API,则可以使用该API查询代理,以询问网络事件何时结束。

    这就是我们在http://browsermob.com上所做的工作,这是我创建的一家使用Selenium进行负载测试的创业公司。我们已经发布了一些代理代码作为开源代码,可从http://browsermob.com/tools获得。

    但是仍然存在两个问题:
  • 您需要配置浏览器以使用代理。在Selenium 2中,这比较容易,但是也可以使用Selenium 1来做到这一点。关键只是确保您的浏览器启动器以正确的配置文件/设置启动浏览器。
  • 当前没有BrowserMob代理的API可以告诉您网络流量何时停止!这是我要尽快解决的项目概念中的一个大漏洞。但是,如果您想提供帮助,请加入Google网上论坛,我绝对可以为您指明正确的方向。

  • 希望能帮助您确定各种选择。祝你好运!

    关于unit-testing - Selenium 等待下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3917533/

    相关文章:

    c# - 在单元测试情况下检查 DefaultHttpContext 主体

    javascript - 为什么 $httpbackend.flush 会导致我的 $scope.$watch 无限期触发?

    Python + Selenium : How to switch to overlay

    java - 如何更改 TestNG 报告中的异常消息

    python - 如何向 Selenium RC TestSuite 输入参数?

    selenium - Selenium Testcase 播放错误

    java - 如何使用 Java 在 Selenium RC 中使用 JavaScript

    unit-testing - 数据访问、单元测试、依赖注入(inject)

    php - 测试 Guzzle 6 下载进度

    selenium - 如何从 Selenium 文本框中获取输入的文本