|
|
|
|
@ -2,16 +2,68 @@ package com.example.sbcamel.processor;
|
|
|
|
|
|
|
|
|
|
import org.apache.camel.Exchange;
|
|
|
|
|
import org.apache.camel.Processor;
|
|
|
|
|
import org.htmlunit.Page;
|
|
|
|
|
import org.htmlunit.WebClient;
|
|
|
|
|
import org.htmlunit.html.DomNode;
|
|
|
|
|
import org.htmlunit.html.HtmlButton;
|
|
|
|
|
import org.htmlunit.html.HtmlForm;
|
|
|
|
|
import org.htmlunit.html.HtmlPage;
|
|
|
|
|
import org.htmlunit.html.HtmlPasswordInput;
|
|
|
|
|
import org.htmlunit.html.HtmlTextInput;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
|
|
|
|
|
import com.example.sbcamel.service.Session;
|
|
|
|
|
|
|
|
|
|
public class LoginProcessor implements Processor {
|
|
|
|
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(LoginProcessor.class);
|
|
|
|
|
|
|
|
|
|
@Value("${app.htmlunit.login-url}")
|
|
|
|
|
private String loginUrl;
|
|
|
|
|
|
|
|
|
|
@Value("${app.htmlunit.login-btn-selector}")
|
|
|
|
|
private String loginBtnSelector;
|
|
|
|
|
|
|
|
|
|
@Value("${app.htmlunit.home-page-selector}")
|
|
|
|
|
private String homePageSelector;
|
|
|
|
|
|
|
|
|
|
@Value("${app.htmlunit.logout-btn-selector}")
|
|
|
|
|
private String logoutBtnSelector;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void process(Exchange exchange) throws Exception {
|
|
|
|
|
logger.info("response body: {}", exchange.getMessage().getBody());
|
|
|
|
|
Session session = (Session) exchange.getMessage().getBody();
|
|
|
|
|
logger.info("session: {}", session);
|
|
|
|
|
|
|
|
|
|
try (final WebClient webClient = new WebClient()) {
|
|
|
|
|
|
|
|
|
|
final HtmlPage loginPage = webClient.getPage(loginUrl);
|
|
|
|
|
final HtmlForm form = loginPage.getForms().get(0);
|
|
|
|
|
final HtmlTextInput usernameField = form.getInputByName("username");
|
|
|
|
|
usernameField.type(session.getUsername());
|
|
|
|
|
logger.info("entered username: {}", session.getUsername());
|
|
|
|
|
|
|
|
|
|
final HtmlPasswordInput passwordField = form.getInputByName("password");
|
|
|
|
|
passwordField.type(session.getPassword());
|
|
|
|
|
logger.info("entered password: {}", session.getPassword());
|
|
|
|
|
|
|
|
|
|
HtmlButton loginBtn = loginPage.querySelector(loginBtnSelector);
|
|
|
|
|
HtmlPage defaultPage = loginBtn.click();
|
|
|
|
|
logger.info("loginBtn clicked, defaultPage: {}", defaultPage);
|
|
|
|
|
|
|
|
|
|
HtmlButton homePageBtn = defaultPage.querySelector(homePageSelector);
|
|
|
|
|
HtmlPage homePage = homePageBtn.click();
|
|
|
|
|
logger.info("homePageBtn clicked, homePage: {}", homePage);
|
|
|
|
|
|
|
|
|
|
HtmlButton logoutBtn = homePage.querySelector(logoutBtnSelector);
|
|
|
|
|
HtmlPage loginPage2 = logoutBtn.click();
|
|
|
|
|
logger.info("logoutBtn clicked, loginPage2: {}", loginPage2);
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
logger.error("LoginProcessor process error!", e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|