Как найти путь и имя файла, загруженного в PHP с помощью веб-драйвера Selenium для Chrome?

0

После загрузки файла с использованием драйвера Selenium и Chrome, как мне получить имя файла?

Этот сайт избегает вопроса, но дает примеры для простых случаев: http://ardesco.lazerycode.com/index.php/2012/07/how-to-download-files-with-selenium-and-why-you-shouldnt/

Моя ссылка - это ссылка JavaScript, которая появляется в новом окне и автоматически загружает файл, а имя файла динамически генерируется на сервере.

Этот сайт предлагает изменить местоположение загрузки, но для Firefox: http://elementalselenium.com/tips/2-download-a-file

В этом списке перечислены все параметры командной строки, но для настройки фильтра загрузки нет: http://www.ericdlarson.com/misc/chrome_command_line_flags.html

Этот вопрос предполагает, что вы можете изменить каталог, но ответ на Java, и он не работает для PHP: файлы загрузки Chrome Web Driver

Я попробовал следующее, но он дал ошибку:

  $options = new ChromeOptions();
  $options->setExperimentalOption('download.default_directory', '\\temp');
  $capabilities = DesiredCapabilities::chrome(); // htmlUnitJS()
  $capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
  $driver = RemoteWebDriver::create($host, $capabilities, 5000);

PHP Неустранимая ошибка: исключение uncaught "UnknownServerException" с сообщением "неизвестная ошибка: невозможно проанализировать возможность: chromeOptions от неизвестной ошибки: нераспознанная опция chrome: download.default_directory

Возможно, это актуально: https://groups.google.com/forum/#!topic/macenterprise/cmSKIyzjQA8 https://github.com/facebook/php-webdriver/wiki/ChromeOptions

Теги:
selenium
selenium-webdriver
google-chrome

1 ответ

0
Лучший ответ

Я изменил его на это, и он сработал. Ему не понравился путь \temp, и ему нужен ассоциативный массив.

  $options = new ChromeOptions();
  $prefs = array('download.default_directory' => 'c:/temp/');
  $options->setExperimentalOption('prefs', $prefs);
  $capabilities = DesiredCapabilities::chrome(); // htmlUnitJS()
  $capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
  $driver = RemoteWebDriver::create($host, $capabilities, 5000);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню