Добрый день!
Мне необходимо один раз авторизоваться на ресурсе через 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. хотя если зайти через обычный бразуер, то кука сохраняется без проблем.
В чем может быть проблема?