Перейти к содержимому

Фотография

Selenium. Chromedriver. user-data-dir. Java. Как хранить Cookies?

Selenium Chromedriver user-data-dir Java

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 sapr71

sapr71

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Петров Алексей Петрович

Отправлено 22 июня 2019 - 01:31

Версия chrome: Версия 75.0.3770.100 (Официальная сборка), (64 бит)

 

Работаю с Chromedriver Headless. Мне нужно хранить где-то куки, что бы после закрытия браузера они не терялись. Пробовал использовать chrome с параметром user-data-dir. Все вроде нормально, создает файлы с настройками и куками в указанной папке и пока сервер работает он берет оттуда куки и записывает их. Но после перезагрузки драйвера он перезаписывает файлы и уже не видит старые куки и создает новые. 

 

 

 

Для проверки создал на локальном сервере вот такой скрипт ( http://test-cookies.local/test.php )

<?php setcookie ("TestCookie", 'COOKIES',time()+3600); ?>
<title>КУКИ : <?php print $_COOKIE['TestCookie']; ?> </title>

Выполняю в selenium (java) вот такой код и вижу что куки он не загружает после перезагрузки

System.setProperty("webdriver.chrome.driver", "drivers\\chromedriver.exe");

ChromeOptions options = new ChromeOptions();

options.addArguments("--user-data-dir=c:\\Users\\lexa\\IdeaProjects\\project\\user1\\");

options.setHeadless(true);

WebDriver driver = new ChromeDriver(options);

driver.get("http://test-cookies.local/test.php");

System.out.println(driver.getTitle());

driver.quit();

Подскажите, может есть какие-нибудь другие решения, что бы куки сохранялись или может я что то не так делаю?

 

 

 

 


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 22 июня 2019 - 08:29

Для работы с куками есть специальные методы:

https://seleniumhq.g...er.Options.html


  • 0

#3 sapr71

sapr71

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Петров Алексей Петрович

Отправлено 22 июня 2019 - 15:48

Для работы с куками есть специальные методы:

https://seleniumhq.g...er.Options.html

 

Это да, но тогда появляется еще вопрос

 

Как Set<Cookieконвертировать в String?

 

Подскажи как с этим быть:

 

Объявляю переменную Set<Cookie> temp1 и присваиваю ей значение текущих cookie.

//Блок-1

Set<Cookie> temp1;
temp1 = driver.manage().getCookies();

После чего мне нужно сохранить эту информацию в файл, что бы потом в определенный момент я мог ее считать из файла.

//Блок-2

//Сохранение переменной temp1 в файл

//Загрузка в переменную temp2 информации из файла

Объявляю переменную Set<Cookie> temp2 в которую надо считать информацию из файла и после чего задать значение cookie из нее.

//Блок-3

Set<Cookie> temp2;
driver.manage().addCookie(temp2);

Интересует именно Блок-2. Подскажите как сделать. Или как конвертировать Set<Cookie> в String?


  • 0

#4 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 22 июня 2019 - 16:13

Этот вопрос вообще-то относится уже к общим вопросом работы с коллекциями в Джаве. Гугл или Яндекс вам должен помочь лучше и быстрее.

        Set<Cookie> lala = driver.manage().getCookies();       
        System.out.println("\n"+ lala.size());
        
        while ( lala.iterator().hasNext() ) {
            Cookie llll = lala.iterator().next();
            System.out.println("\n" + llll.toString());
            System.out.println("Name = " + llll.getName() + ", Value = " + llll.getValue());
            lala.remove(llll);
        }

  • 0

#5 sapr71

sapr71

    Новый участник

  • Members
  • Pip
  • 6 сообщений
  • ФИО:Петров Алексей Петрович

Отправлено 26 июня 2019 - 06:04

Версия chrome: Версия 75.0.3770.100 (Официальная сборка), (64 бит)

 

Работаю с Chromedriver Headless. Мне нужно хранить где-то куки, что бы после закрытия браузера они не терялись. Пробовал использовать chrome с параметром user-data-dir. Все вроде нормально, создает файлы с настройками и куками в указанной папке и пока сервер работает он берет оттуда куки и записывает их. Но после перезагрузки драйвера он перезаписывает файлы и уже не видит старые куки и создает новые. 

 

 

 

Для проверки создал на локальном сервере вот такой скрипт ( http://test-cookies.local/test.php )

<?php setcookie ("TestCookie", 'COOKIES',time()+3600); ?>
<title>КУКИ : <?php print $_COOKIE['TestCookie']; ?> </title>

Выполняю в selenium (java) вот такой код и вижу что куки он не загружает после перезагрузки

System.setProperty("webdriver.chrome.driver", "drivers\\chromedriver.exe");

ChromeOptions options = new ChromeOptions();

options.addArguments("--user-data-dir=c:\\Users\\lexa\\IdeaProjects\\project\\user1\\");

options.setHeadless(true);

WebDriver driver = new ChromeDriver(options);

driver.get("http://test-cookies.local/test.php");

System.out.println(driver.getTitle());

driver.quit();

Подскажите, может есть какие-нибудь другие решения, что бы куки сохранялись или может я что то не так делаю?

 

Так а почему вот этот код то не работает????


  • 0

#6 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 26 июня 2019 - 09:15


Так а почему вот этот код то не работает????

 

Так а где в этом коде собственно сохранение и восстановление куки, то есть "Блок-2"?


  • 0



Темы с аналогичным тегами Selenium, Chromedriver, user-data-dir, Java

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных