0

我一直在尝试使用 PHP Webdriver for Selenium 下载最新版本的 Firefox 文件,但我无法使其工作。这是我的 phpunitbootstrap.php文件中用于 Firefox 的 WebDriver 配置的代码:

$profile = new FirefoxProfile();
$caps = DesiredCapabilities::firefox();

$profile->setPreference('browser.download.folderList', 2);
$profile->setPreference('browser.download.manager.showWhenStarting', false);
$profile->setPreference('browser.download.dir', __DIR__.'/temp');
$profile->setPreference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf');

$caps->setCapability(FirefoxDriver::PROFILE, $profile);

RemoteWebDriver::create('http://localhost:4444/wd/hub', $caps);

其中一些首选项,例如页面browser.helperApps.neverAsk.saveToDisk上不存在about:config。我可以手动添加它们,但即使这样做,我也无法让 Firefox 将文件下载到特定文件夹而不询问我是否要保存它。

也许不再可能了?

谢谢!

4

1 回答 1

0

好的。我发现了我的错误。我将此标头配置为发送 pdf:

header('Content-Disposition: attachment; filename="filename.pdf"');

遗憾的是,该attachment选项使 Firefox 始终打开“另存为”窗口。改变它来inline解决问题。

顺便说一句,对于 Firefox 57++,这是正确的配置:

$profile = new FirefoxProfile();
$caps = DesiredCapabilities::firefox();

$profile->setPreference('browser.download.folderList', 2);
$profile->setPreference('browser.download.dir', __DIR__.'/temp');
$profile->setPreference('browser.helperApps.neverAsk.saveToDisk', 'application/pdf');
$profile->setPreference('pdfjs.enabledCache.state', false);

$caps->setCapability(FirefoxDriver::PROFILE, $profile);

RemoteWebDriver::create('http://localhost:4444/wd/hub', $caps);

归功于https://stackoverflow.com/a/47707635/2862917

PS:在 Windows 上,browser.download.dir必须有\而不是/for 路径!

于 2017-12-22T14:28:29.310 回答