2017-12-04 10 views
0

Selenium 용 PHP Webdriver를 사용하여 최신 버전의 Firefox에서 파일을 다운로드하려고했지만 제대로 작동하지 않습니다. browser.helperApps.neverAsk.saveToDiskabout:config 페이지에 존재하지 않는 것처럼,Firefox에서 Selenium 용 PHP Webdriver를 사용하여 파일을 다운로드하는 방법 58 ++

$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); 

그 환경의 일부 :이 파이어 폭스에 대한 WebDriver 구성에 대한 내 phpunit을 bootstrap.php 파일에 내가 가지고있는 코드입니다. 나는 수동으로 추가 할 수 있지만, 그렇게해도 파이어 폭스를 저장할 것인지 묻지 않고 특정 폴더에 파일을 다운로드 할 수는 없다.

어쩌면 더 이상 가능하지 않을까요?

감사합니다.

+0

'FirefoxProfile'을 사용하지 말고'FirefoxOptions'를 대신 사용하십시오. –

+0

내가 실수하지 않으면 'FirefoxOptions'이 존재하지 않습니다 ( –

+0

PHP 클라이언트에서 구현되지 않은 경우 기능에서 환경 설정을 직접 설정하십시오.) –

답변

0

확인. 나는 내 잘못을 발견했다.

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

안타깝게도 attachment 옵션은 파이어 폭스는 항상 창으로 저장을 열 수 있습니다 : 나는 전송 PDF 파일에 대해 구성이 헤더를 가지고 있었다. inline으로 변경하면 문제가 해결됩니다.

$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 경로에 대한 \ 대신 /이 있어야 그런데

는 파이어 폭스 57 ++, 이것은 올바른 구성입니다 !