【问题标题】:How can i cancel a download in firefox by using Selenium Webdriver?如何使用 Selenium Webdriver 在 Firefox 中取消下载?
【发布时间】:2015-02-12 14:03:18
【问题描述】:

我必须从网站下载大约 500 个文件。它可以工作,但有时该网络无法正常工作并且下载没有完成。我手动取消它,但我想在我的脚本中执行它。

有什么方法可以用 Java 中的 Selenium API 来实现吗?

【问题讨论】:

    标签: java selenium selenium-webdriver


    【解决方案1】:

    Selenium 下载不可取消,因为下载既可以在后台进行(当前页面上没有可以与之交互的 javascript),也可以替换当前页面(根本没有 javascript) .

    相反,您可以通过检查您将要点击的链接而不是在 selenium 中点击它们来收集您希望下载的 URL。如果您随后使用常规 Java 请求请求它们,则可以适当地处理它们(即添加超时)。您可能需要从 Selenium 收集 cookie 才能发出下载请求。

    你可以这样获取cookies:

    webdriver.manage().getCookies()
    

    the documentation

    您可以像这样获取链接的 URL:

    webdriver.findElement(...).getAttribute("href");
    

    您可能必须将其从相对 URL 转换为绝对 URL。

    然后您可以像这样在 Java 中发出请求:

    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
    

    【讨论】:

      猜你喜欢
      • 2018-03-08
      • 2017-03-09
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 2016-07-21
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多