Selenium等待下载?

Ste*_*all 9 selenium unit-testing selenium-rc

我正在尝试测试一段需要很长时间才能响应的代码的快乐路径,然后开始将文件写入响应输出流,这会在浏览器中提示下载对话框.

问题是这个过程在过去失败了,在这么长时间的工作之后抛出了异常.有没有一种方式在硒wait-for-download或等效?

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

我该怎么办?

Moo*_*bat 8

我有同样的问题.我发明了一些东西来解决问题.tempt文件由Python创建,扩展名为".part".所以,如果我们还有temp,python可以等待10秒,然后再次检查文件是否已经下载.

 while True:
        if os.path.isfile('ts.csv.part'):
            sleep(10)
        elif os.path.isfile('ts.csv'):
            break
        else:
            sleep(10)
 driver.close()
Run Code Online (Sandbox Code Playgroud)


Pat*_*ody 5

所以你有两个问题:

  1. 您需要使浏览器下载该文件
  2. 您需要测量下载的文件何时完成

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

第二个问题可能最好通过某种代理解决方案来解决.例如,如果您的浏览器配置为通过代理并且该代理具有API,则可以使用该API查询代理以询问网络活动何时结束.

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

但是仍然存在两个问题:

  1. 您需要配置浏览器以使用代理.在Selenium 2中,这更容易,但也可以使用Selenium 1.关键是确保您的浏览器启动器使用正确的配置文件/设置启动浏览器.
  2. 目前没有用于BrowserMob代理的API可以告诉您网络流量何时停止!这是项目概念中的一个大漏洞,我想尽快解决这个问题.但是,如果您渴望提供帮助,请加入Google群组,我绝对可以为您指明正确的方向.

希望能帮助您识别各种选择.祝你好运!