簡體   English   中英

如何使用Selenium Webdriver取消在Firefox中的下載?

[英]How can i cancel a download in firefox by using Selenium Webdriver?

我必須從網站上下載約500個文件。 它可以工作,但有時網絡無法正常工作,下載也無法完成。 我手動取消了它,但是我想在腳本中完成它。

有什么方法可以用Java中的Selenium API做到這一點?

硒下載無法取消,因為下載可以在后台進行(當前頁面上沒有可與之交互的javascript),也可以替換當前頁面(根本沒有javascript)。

相反,您可以通過檢查要單擊的鏈接來收集希望下載的URL,但不要在硒中單擊它們。 如果隨后使用常規Java請求來請求它們,則可以適當地處理它們(即添加超時)。 您可能需要從Selenium收集cookie才能提出下載請求。

您可以這樣獲得cookie:

webdriver.manage().getCookies()

請參閱文檔

您可以獲取如下鏈接的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM