Я пытаюсь автоматизировать загрузку файла в безголовом хроме с помощью Laravel/Dusk. В режиме графического интерфейса файл отлично загружается в мою папку загрузки. Но в безголовом режиме загрузка вообще не происходит. Есть ли способ решить этот вопрос?
Загрузка файла в безголовом хроме с использованием Laravel/Dusk
comment
См. stackoverflow.com/q/48888036/4848587.
- person Jonas Staudenmeir   schedule 18.05.2018
Ответы (3)
Для тех, кто сталкивался с этим, я нашел простое решение с текущей версией Laravel на момент написания этой статьи.
Я предлагаю сначала создать каталог в вашем пути к хранилищу с именем temp
(вероятно, вы также хотите игнорировать это), а затем перейти к настройке файла DuskTestCase.php
с установкой Dusk.
В методе driver
добавьте следующее в раздел, который инициализирует переменную ChromeOptions
.
$options->setExperimentalOption('prefs', [
'download.default_directory' => storage_path('temp')
]);
Теперь функция driver
должна выглядеть так:
$options = (new ChromeOptions())->addArguments([
'--disable-gpu',
'--headless',
'--window-size=1920,1080'
]);
$options->setExperimentalOption('prefs', [
'download.default_directory' => storage_path('temp')
]);
return RemoteWebDriver::create(
'http://localhost:9515',
DesiredCapabilities::chrome()->setCapability(
ChromeOptions::CAPABILITY,
$options
)
);
В качестве примечания, это сработало для меня с PDF-файлом, созданным с помощью JS, поэтому я не могу точно сказать, как это работает с файлом, загруженным из серверной части.
person
Garrett
schedule
29.03.2020
Нет необходимости запускать отдельный Guzzle POST, вместо этого я использовал CustomWebDriverCommand
:
$command = new \Facebook\WebDriver\Remote\CustomWebDriverCommand(
$driver->getSessionID(),
"/session/:sessionId/chromium/send_command",
"POST",
[
"cmd" => "Page.setDownloadBehavior",
"params" => ["behavior" => "allow", "downloadPath" => '/your/download/path']
]
);
$driver->getCommandExecutor()->execute($command);
person
buchi
schedule
17.07.2020
Добро пожаловать в сообщество StackOverflow. Проверьте stackoverflow.com/help/how-to-ask, чтобы улучшить свой вопрос. Надеюсь, вы останетесь с нами надолго :)
- person Aleksander Ikleiw; 17.07.2020
person
schedule
Ответы, содержащие только код, не считаются качественными. Пожалуйста, откройте и уточните, что делает этот фрагмент кода. Также, если вы куда-то скопировали, укажите источник. Спасибо.
- person quinz; 11.07.2018
Это прямой ответ на вопрос. Любой, кто немного знаком с личиночными сумерками, поймет его. В любом случае он перезаписывает поведение загрузки Chrome для определенного сеанса. Вот ссылка (bugs.chromium.org/p/chromium /issues/detail?id=696481#c61)
- person Yuvrajsinh Jhala; 12.07.2018