单击下载按钮后,将下载文件。在执行下一段代码之前,需要等到下载完成。
我的代码如下所示:
Thread.sleep(2000);
driver.findElement(By.xpath("//*[@id='perform']")).click();//click for download
Thread.sleep(20000);
//code to be executed after download completes
Readfile fileobj=new Readfile();
String checkfile=fileobj.checkfilename();
如何让 webdriver 等到下载完成?
原文由 qaepk 发布,翻译遵循 CC BY-SA 4.0 许可协议
有点晚了,但这个问题有很多观点,我认为值得花时间回答它,以防你没有继续前进或其他人遇到它。
我也遇到了同样的问题,并认为我会分享。当时我正在用 python 开发,但同样的概念也适用。您不必使用 selenium 进行实际下载。与其单击元素开始下载,不如考虑检索链接并使用内置函数从那里继续。
您通常单击以开始下载的元素应该有一个“href”属性,您应该能够使用 selenium 读取该属性。这是指向实际文件的 url。在 python 中,它看起来像这样:
从这里您可以使用 http 库来调用 url。这里的重要部分是您将“stream”设置为 true,这样您就可以开始将字节写入文件。确保文件路径包含正确的文件扩展名和另一件事,大多数操作系统不允许您使用某些字符命名文件,例如反斜杠或引号,所以请注意这一点。
在下载完成之前程序不应继续,因此在完成之前不再需要轮询。
我很抱歉用不同的语言回答,在 Java 中我相信你可以使用 HttpURLConnection API。希望这可以帮助!