如何在Firefox 58 ++上使用适用于Selenium的PHP Webdriver下载文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Firefox 58 ++上使用适用于Selenium的PHP Webdriver下载文件相关的知识,希望对你有一定的参考价值。

我一直在尝试使用适用于Selenium的php Webdriver下载具有最新版本Firefox的文件,但我无法使其工作。这是我的phpunit bootstrap.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.saveToDiskabout:config页面上不存在。我可以手动添加它们,但即使这样做,我也无法让Firefox将文件下载到特定文件夹而不询问我是否要保存它。

也许是不可能的?

谢谢!

答案

好。我发现了我的错误。我有这个头配置为发送pdfs:

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必须有而不是/的路径!

以上是关于如何在Firefox 58 ++上使用适用于Selenium的PHP Webdriver下载文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在iPad上使用HTML5 / Javascript合成音频

在 CSS 上使用图像样式的复选框和单选仅适用于 Chrome

如何使用 PYTHON 的“tkinter”模块在画布上显示图像,特别适用于 linux?

如何使用适用于 Chrome Windows 10 的 WebDriver 在 Eclipse (Java) 上安装 Selenium

如何使用适用于 Android 和 iOS 的 Xamarin 表单在特定频道上的 youtube 上上传视频?

如何在 Windows x64 上使用 openSSL 和 nghttp2 编译 cURL?