Selenium C # - Chrome Driver не загружает файлы в автономном режиме - PullRequest
0 голосов
/ 07 октября 2019

Я использую 77-ю версию Chrome для проверки некоторых загрузок. Но я не понимаю, почему он не позволяет загружать файлы в безголовом режиме (происходит только в безголовом режиме). Это код, который я использую.

_chromeOptions.AddUserProfilePreference ("download.default_directory", @ "Папка каталога");_chromeOptions.AddUserProfilePreference ("intl.accept_languages", "nl");_chromeOptions.AddUserProfilePreference ("disable-popup-blocking", "true");_webdriver = новый ChromeDriver (_chromeOptions);

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

Загрузка файлов отключена в режиме Chrome Headless по умолчанию. См .: https://bugs.chromium.org/p/chromium/issues/detail?id=696481

Вам необходимо выполнить API-вызов драйвера, чтобы включить его.

var driver = new ChromeDriver(driverService, options);
// Allow download in headless mode
var param = new Dictionary<string, string> {{"behavior", "allow"}, {"downloadPath", DownloadPath}
};
var cmdParam = new Dictionary<string, object> {{"cmd", "Page.setDownloadBehavior"}, {"params", param}};
var url = driverService.ServiceUrl + "session/" + driver.SessionId + "/chromium/send_command";
var cli = new WebClient {Headers = {[HttpRequestHeader.ContentType] = "application/json"}};
_ = cli.UploadString(url, JsonConvert.SerializeObject(cmdParam));
0 голосов
/ 07 октября 2019

В качестве альтернативы вы можете загружать файлы, используя браузер Firefox без головы.

FirefoxOptions options = new FirefoxOptions();
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", "C:\\Windows\\temp");
profile.setPreference( "browser.download.manager.showWhenStarting", false );
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream");
options.setProfile(profile);
driver = new FirefoxDriver(options);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...