我需要从一个网站下载大约500个文件。虽然已经可以下载,但有时网站运行不稳定,导致下载无法完成。我通常要手动取消下载,但我希望能在我的脚本中实现。
有没有使用Java中Selenium API实现自动取消下载的方法?
我需要从一个网站下载大约500个文件。虽然已经可以下载,但有时网站运行不稳定,导致下载无法完成。我通常要手动取消下载,但我希望能在我的脚本中实现。
有没有使用Java中Selenium API实现自动取消下载的方法?
Selenium下载不可取消,因为下载可以在后台进行(当前页面上没有JavaScript可以与其交互),或者它可以替换当前页面(此时完全没有JavaScript)。
相反,您可以通过检查您即将点击但不要在selenium中点击的链接来收集要下载的URL。然后,使用常规Java请求请求它们,您可以适当地处理它们(例如添加超时)。您可能需要从Selenium中收集cookies以便进行下载请求。
您可以这样获取cookies:
webdriver.manage().getCookies()
请查看文档。
您可以像这样获取链接的URL:
webdriver.findElement(...).getAttribute("href");
URL url = new URL(...);
URLConnection request = url.openConnection();
StringBuilder cookies = new StringBuilder();
for (Cookie cookie : webdriver.manage().getCookies()) {
if (cookies.length() > 0) {
cookies.append("; ");
}
cookies.append(cookie.getName())
.append("=")
.append(cookie.getValue());
}
request.setRequestProperty("Cookie", cookies.toString());
request.setConnectionTimeout(...);
request.setReadTimeout(...);
request.connect();
request.getInputStream(); // do stuff with the data from the input stream