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 только для запуска его в автономном режиме.

Обновить: Я все еще ищу решение, если кто-нибудь когда-нибудь прочтет это: / Результаты поиска есть несколько, и я попробовал их все

Ответы на вопрос(1)

Ваш ответ на вопрос