Почему не сохраняются cookies при настройке user-data-dir в php-webdriver?

Добрый день!
Мне необходимо один раз авторизоваться на ресурсе через selenium и в дальнейшем постоянно работать с уже авторизованным браузером. Нашел очень удобное решение - указать директорию до профиля через user-data-dir, чтобы при каждом запуске браузер был авторизован. Но по какой то причине это не работает.

про addCookie в курсе, но в данной задаче это не очень подходит.

ОС - Ubuntu 18.04
ChromeDriver 83.0.4103.39
selenium-server-standalone-4.0.0-alpha-1.jar

запускаю все командой:
java -Dwebdriver.chrome.driver="/opt/chromium-browser/chromedriver" -Dwebdriver.chrome.whitelistedIps="127.0.0.1" -jar selenium-server-standalone-4.0.0-alpha-1.jar


Вот сам код:
$options = new ChromeOptions();
$options->addArguments(["--headless", "--no-sandbox", "window-size=1920,1080", "--proxy-server=http://$proxy_ip", "user-agent=$useragent", "--user-data-dir=/home/userdata"]);
$caps = DesiredCapabilities::chrome();
$caps->setCapability(ChromeOptions::CAPABILITY, $options);
$driver = RemoteWebDriver::create('http://localhost:4444/wd/hub', $caps, 60000, 60000);

$driver->get("https://domain.ru/cookies.php");

$elem = $driver->findElement(
    WebDriverBy::cssSelector('html')
);

$html = $elem->getAttribute('outerHTML');

var_dump($html);

$driver->quit();


в cookies.php -

if(!isset($_COOKIE['test1'])){
	$values = "DateTime: " . date('m.d.Y H:i:s') . "; Rand: " . rand(111111, 999999);
	setcookie("test1", $values, time()+3600 * 240);
}
var_dump($_COOKIE['test1']);


Сама директория профиля в /home/userdata создается с различными файлами после запуска сркипта.

И при повторном запуске всегда выдает NULL. хотя если зайти через обычный бразуер, то кука сохраняется без проблем.

В чем может быть проблема?
  • Вопрос задан
  • 319 просмотров
Пригласить эксперта
Ответы на вопрос 1
tomclancys
@tomclancys
--user-data-dir=PATH – Указывает расположение папки с профилями.

--profile-directory=Profile 1 – Задает папку профиля, по умолчанию стоит Default.

--allow-profiles-outside-user-dir – Позволяет указать кастомное расположение папки с профилями.

--profiling-flush=n – сбрасывает данные профиля в файл через n-ое число секунд.

--enable-aggressive-domstorage-flushing – минимизирует потерю данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы