stackoverflow.com/questions/31672897/...
могу получить Selenium и Chrome (Canary) для загрузки файла. Я использую Java и Chrome 59/60 (потому что мои тесты предназначены как для Windows, так и для Linux) и пытаюсь начать загрузку файла с веб-страницы.
Когда я из селена НЕ устанавливаю режим без головы, открывается окно Chrome и файл загружается.
Когда я устанавливаю--headless
флаг, окно chrome не открывается и загрузка не начинается.
public static void chromeDownload() throws IOException, InterruptedException{
ChromeOptions options = new ChromeOptions();
String downloadFilepath = "";
if (ValidateOS.isWindows()){
System.out.println("This is a Windows system.");
System.setProperty("webdriver.chrome.driver", "resources\\driver\\chromedriver.exe");
options.setBinary("C:\\Users\\Juri\\AppData\\Local\\Google\\Chrome SxS\\Application\\chrome.exe");
downloadFilepath = "C:\\";
} else if (ValidateOS.isUnix()){
System.out.println("This is a Unix system.");
System.setProperty("webdriver.chrome.driver", "resources/driver/chromedriver");
options.setBinary("/usr/bin/google-chrome");
downloadFilepath = "/home/juri/";
}
// Manage the download
HashMap<String, Object> chromePrefs = new HashMap<>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", downloadFilepath);
// Save Chrome Options
HashMap<String, Object> chromeOptionsMap = new HashMap<>();
options.setExperimentalOption("prefs", chromePrefs);
options.addArguments("--headless --disable-gpu");
DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptionsMap);
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cap.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(cap);
driver.get("http://localhost/my-test-page.html");
driver.findElement(By.id("download")).click();
Thread.sleep(5000); // wait 5 seconds for a small file to download.. yes.. I know...
driver.quit();
}
На Щелчок, в режиме GUI загрузка начинается. В режиме без головы это не так.
Как решить?
Ветхий ЗаветЯ использую Chrome Canary, который на v.60 поставляется с--без головы особенность. Ультра удобен для запуска граббера на сервере без графического интерфейса. Но по той же причине .. Я считаю бесполезным загружать Chrome на сервер без графического интерфейса. Помимо основного вопроса ... Интересно, если вы, разработчики, думаете, что можно установить chrome на сервер Linux только для запуска его в автономном режиме.
Обновить: Я все еще ищу решение, если кто-нибудь когда-нибудь прочтет это: / Результаты поиска есть несколько, и я попробовал их все