【发布时间】:2020-04-01 01:24:03
【问题描述】:
我正在尝试从基于 Web 的应用程序下载 Excel 报告,单击“下载”按钮后需要 30 分钟才能开始下载(生成并开始下载需要 30 分钟)。文件大小约为 54 MB。以下是我的代码:
driver().findElement(By.xpath(locator_for_download)).click(); //to click on download button
TimeUnit.SECONDS.sleep(2400); //making it to sleep for 40 mins so that my report gets downloaded.
但是,一旦单击“下载”按钮,5 分钟后我会收到以下错误并关闭浏览器:
Exception: java.lang.InterruptedException: sleep interrupted
我试图隐式等待 2400 秒:
driver.manage().timeouts().implicitlyWait(TimeOut, TimeUnit.SECONDS);
而且页面加载超时都没有用。
P.S - 我们对其执行的任何操作都不会更改 URL。 Web 应用程序具有 iframe,我正在 Google chrome 浏览器中进行自动化操作。
由于睡眠对我不起作用,任何人都可以帮助我如何下载我的报告吗?是不是因为浏览器超时时间变少而被强制关闭?任何帮助都非常感谢。
【问题讨论】:
-
您是否在代码中的某处抛出了一个中断的异常来表示线程应该停止?线程在睡眠时无法处理中断。所以你需要在线程退出睡眠时捕获异常,然后处理中断。可能需要查看更多代码才能更好地了解发生了什么
-
我没有抛出中断异常。在我点击下载按钮以确保我的文件下载完成后,我所给出的只是睡眠 2400 秒。这是代码: driver().findElement(By.xpath(Control1)).click(); TimeUnit.SECONDS.sleep(2400);
-
我也厌倦了用 timeout() 处理它,但我得到了 MissingMethodException: timeout() 适用于争论类型(整数)值,下面是代码 driver().findElement(By.xpath(element_locator) )。点击();尝试 { TimeUnit.SECONDS.sleep(2400); }catch(Exception e) { log.error("异常 "+e.toString());超时(2400*1000); }
-
去掉 'Thread.sleep()' 并使用这个stackoverflow.com/questions/58717512 等待下载完成。
标签: java selenium selenium-webdriver sleep thread-sleep