尝试将safari(驱动程序)下载目录设置到特定位置。
现在它将仅将文件下载到默认的“下载”文件夹。

String currentDirectory = System.getProperty("user.dir");
String downloadFilePath = currentDirectory+"/download/";


已经尝试过:

dc.setCapability("safari.download.dir", downloadFilePath);
dc.setCapability("browser.download.dir", downloadFilePath);
dc.setCapability("safari.options.dataDir", downloadFilePath); // ("safari.options.dataDir" // this part won't work)

safariOptions.setCapability("safari.options.dataDir", downloadFilePath);

safariPrefs.put("download.deafult_directory", downloadFilePath); // this one I am using for chromedriver (chromePrefs)

最佳答案

好了,您可以尝试使用HTTP连接下载文件!这样,您可以确定将其保存到变量中指定的目录中。

大多数语言都有用于执行HTTP请求的API(或库)。例如,要在Java中完成此操作,可以使用URL.openConnection()

String link = linkElement.getAttribute("href");
URL url = new URL(link);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");


然后,您可以使用HttpURLConnection.getInputStream()将文件内容写入您的首选位置。

try (InputStream in = httpURLConnection.getInputStream()) {
    Files.copy(in, new File("/path/to/file.ext").toPath(),
        StandardCopyOption.REPLACE_EXISTING);
}


仅在您使用Cookie的情况下:
您可以将它们添加到HTTP连接。如果在这种情况下,您必须使用保存在cookie上的密码,这将非常有用。

Set<Cookie> cookies = webDriver.manager().getCookies();
String cookieString = "";

for (Cookie cookie : cookies) {
    cookieString += cookie.getName() + "=" + cookie.getValue() + ";";
}

httpURLConnection.addRequestProperty("Cookie", cookieString);

09-10 12:58
查看更多