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

时间:2015-03-05 21:27:00

标签: php google-chrome selenium selenium-webdriver

使用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 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致命错误:未捕获的异常' UnknownServerException'带有消息'未知错误:无法解析功能:chromeOptions   来自未知错误:无法识别的chrome选项:download.default_directory

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

1 个答案:

答案 0 :(得分: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);