Я использую селен, чтобы получить ссылку от a, и я хотел проверить, была ли это ссылка для скачивания.
Для этого я использовал этот код, который я сделал с URL и URLConnection:
final WebElement element = driver.findElement(By.xpath(pathToFile));
URL url = null;
final String urlFileToDownload = element.getAttribute("href");
URLConnection myCon = null;
String contentDisposition = "";
try {
url = new URL(urlFileToDownload);
myCon = url.openConnection();
contentDisposition = myCon.getHeaderField("Content-Disposition");
if (!contentDisposition.contains("attachment;filename=")) {
assertTrue(false, "The link isn't a download link.");
}
} catch (final MalformedURLException e) {
throw new TestIntegrationException("Error while creating URL : " + e.getMessage());
} catch (final IOException e) {
throw new TestIntegrationException("Error while connecting to the URL : " + e.getMessage());
}
assertTrue(true, "Link is a download link.");
Проблема в том, что моя ссылка является ссылкой для скачивания, как вы можете видеть на этой картинке: Image-link-download . (картинка - принт-экран консоли)
И когда я открываю соединение url.openConnection();
myCon.getHeaderField("Content-Disposition")
равно нулю.
Я искал способ сделать это, но каждый раз, когда мое поле заголовка пусто, и я не могу найти проблему, потому что, когда я проверяю консоль, мое поле заголовка не пусто ...
РЕДАКТИРОВАТЬ: я запускаю свой тест селена на докер-сервере, я думаю, это важный момент, чтобы знать.