如何使用 Chrome 的 Selenium Web 驱动程序找到在 PHP 中下载的文件的路径和名称?

How do I find the path and name of a file downloaded in PHP with Selenium web driver for Chrome?

使用 Selenium 和 Chrome 驱动程序下载文件后,如何获取文件名?

这个网站回避了这个问题,但给出了简单案例的例子: http://ardesco.lazerycode.com/index.php/2012/07/how-to-download-files-with-selenium-and-why-you-shouldnt/

我的link是一个Java脚本link弹出一个新的window并自动下载文件,文件名是在服务器上动态生成的.

本网站建议更改下载位置,但对于 Firefox: http://elementalselenium.com/tips/2-download-a-file

这列出了所有命令行选项,但有 none 用于设置下载过滤器: http://www.ericdlarson.com/misc/chrome_command_line_flags.html

这个问题建议您可以更改目录,但答案在 Java 中并且不适用于 PHP: Chrome Web Driver download files

我尝试了以下方法,但出现错误:

  $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 Fatal error: Uncaught exception 'UnknownServerException' with message 'unknown error: cannot parse capability: chromeOptions from unknown error: unrecognized chrome option: download.default_directory

可能相关: https://groups.google.com/forum/#!topic/macenterprise/cmSKIyzjQA8 https://github.com/facebook/php-webdriver/wiki/ChromeOptions

我把它改成了这个,它起作用了。它不喜欢 \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);