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

时间:2017-12-04 11:49:37

标签: php selenium firefox phpunit facebook-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.saveToDisk页面上不存在某些偏好设置,例如about:config。我可以手动添加它们,但即使这样做,我也无法让Firefox将文件下载到特定文件夹而不询问我是否要保存它。

可能再也不可能了?

谢谢!

1 个答案:

答案 0 :(得分:0)

确定。我发现了我的错误。我已将此标头配置为发送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路径必须有\而不是/