Управление сеансом HtmlUnit

Я пытаюсь войти на страницу Facebook с помощью HtmlUnit и просмотреть ее содержимое HTML. Я пытаюсь заполнить учетные данные для входа через HtmlUnit, но не вижу, чтобы сеанс выполнялся при нажатии кнопки отправки.

Не удалось найти много контента в классах управления сеансами htmlunit. Я также приложил код, который я сейчас использую для решения этой проблемы. Любая помощь приветствуется!

WebClient webClient = new WebClient();
HtmlPage page1 = webClient.getPage("https://www.facebook.com");
List<HtmlForm> listF = page1.getForms();
HtmlForm form = null;
for(int i=0; i<listF.size(); i++)
{
    if(listF.get(i).getId().equals("login_form"))
    {
        form = listF.get(i);
        }
}
HtmlTextInput uName = form.getInputByName("email");
HtmlPasswordInput passWord = form.getInputByName("pass");
HtmlSubmitInput button = form.getInputByValue("Log In");
uName.setValueAttribute(FACEBOOK_UNAME);
passWord.setValueAttribute(FACEBOOK_PASS);
HtmlPage page2 = button.click();

person rishiehari    schedule 22.10.2012    source источник


Ответы (2)


Нашел ответ. Просто включил куки, прежде чем начать получать веб-страницы. Оно работает. Добавлен приведенный ниже фрагмент кода

WebClient webClient = new WebClient();
CookieManager cookieMan = new CookieManager();
cookieMan = webClient.getCookieManager();
cookieMan.setCookiesEnabled(true);
person rishiehari    schedule 26.10.2012
comment
Похоже, вы также получаете этот параметр по умолчанию, когда создаете веб-клиент как версию браузера: WebClient webClient = new WebClient(BrowserVersion.INTERNET_EXPLORER_11); - person encrest; 19.06.2015

Другой совет: если вы пытаетесь восстановить HTTP-сессию в HtmlUnit, вместо использования webClient.getCookieManager().addCookie(cookie); используйте это вместо этого:

webClient.addCookie("cookieName=cookieValue", URL, null);
person dimon37    schedule 22.04.2019