Selenium не может открыть страницу с веб-драйвером, используя мои собственные куки - PullRequest
0 голосов
/ 30 марта 2019

Я пытаюсь установить некоторые файлы cookie, которые у меня уже есть, для обработки запроса к сайту с использованием ChromeWebDriver и Selenium в Java:

System.setProperty("webdriver.chrome.driver", "/Users/test/Desktop/Configs/chromedriver");
WebDriver driver = new ChromeDriver();
driver.manage().addCookie(new Cookie("mycookie","test"));
driver.get("https://www.google.com/");  

Но я получил следующее исключение: Исключение в потоке "main" org.openqa.selenium.UnableToSetCookieException: невозможно установить cookie. Конечно, я пытаюсь использовать настоящие cookie-файлы, и они также работают в браузере ...

Ответы [ 4 ]

0 голосов
/ 01 апреля 2019

Как упоминалось выше, текущий URL драйвера должен находиться в том же домене, что и cookie.Кроме того, вы можете использовать javascript, чтобы установить cookie с Selenium, как в обычном браузере:

driver.executeScript("document.cookie ="'cookie1=test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'");

Если вы хотите добавить cookie в список файлов cookie, вы можете сделать следующее:

driver.executeScript("document.cookie ="document.cookie + 'cookie1=test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'");
0 голосов
/ 30 марта 2019

Selenium запрещено добавлять файлы cookie в произвольные домены. Домен cookie должен совпадать с доменом активного документа текущего контекста просмотра. Это поведение описано в спецификации W3C WebDriver и реализовано всеми основными поставщиками браузеров. Смотри: https://w3c.github.io/webdriver/#add-cookie

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

0 голосов
/ 31 марта 2019

Я согласен с Ros5292 ответом.

Хорошо, теперь, если вам нужно, вам нужно удалить cookie после открытия URL, как указано ниже:

driver.get("https://www.google.com/");
driver.manage().deleteAllCookies();
driver.manage().addCookie(new Cookie("mycookie","test"));
Set<Cookie> coo = driver.manage().getCookies(); 
coo.forEach(System.out::println); 

Необязательно:

Еще одна вещь: если вы хотите увидеть изменения, сделанные путем добавления простоты cookie, вам нужно обновить страницу (сразу после добавления):

driver.get("https://www.google.com/");
driver.manage().deleteAllCookies();
driver.manage().addCookie(new Cookie("mycookie","test"));
driver.navigate().refresh();
0 голосов
/ 30 марта 2019

Сначала перейдите по URL, а затем попробуйте добавить куки, попробуйте следующую последовательность:

System.setProperty("webdriver.chrome.driver", "/Users/test/Desktop/Configs/chromedriver");
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com/");
driver.manage().addCookie(new Cookie("mycookie","test"));

Обновление: После добавления куки мы можем проверить это, отобразив все куки.

Set<Cookie> cookiesList =  driver.manage().getCookies();
for(Cookie getcookies :cookiesList) {
   System.out.println(getcookies );
}
...