v3.0.2 Adding some clicking events in login processor

prototype
Yan 7 months ago
parent 2f7c4075f7
commit bdf0ce7e0b

@ -23,6 +23,11 @@ app:
username: "app" username: "app"
password: "app" password: "app"
mapper-package: "com.example.sbcamel.mapper" mapper-package: "com.example.sbcamel.mapper"
htmlunit:
login-url: ""
login-btn-selector: ""
home-page-selector: ""
logout-btn-selector: ""
eureka: eureka:
client: client:

@ -23,6 +23,11 @@ app:
username: "app" username: "app"
password: "app" password: "app"
mapper-package: "com.example.sbcamel.mapper" mapper-package: "com.example.sbcamel.mapper"
htmlunit:
login-url: ""
login-btn-selector: ""
home-page-selector: ""
logout-btn-selector: ""
eureka: eureka:
client: client:

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId> <groupId>com.example</groupId>
<artifactId>camel-springboot-activemq6-example</artifactId> <artifactId>camel-springboot-activemq6-example</artifactId>
<version>3.0.1</version> <version>3.0.2</version>
<name>camel-springboot-activemq6-example</name> <name>camel-springboot-activemq6-example</name>
<properties> <properties>

@ -2,16 +2,68 @@ package com.example.sbcamel.processor;
import org.apache.camel.Exchange; import org.apache.camel.Exchange;
import org.apache.camel.Processor; 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.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import com.example.sbcamel.service.Session;
public class LoginProcessor implements Processor { public class LoginProcessor implements Processor {
private static final Logger logger = LoggerFactory.getLogger(LoginProcessor.class); 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 @Override
public void process(Exchange exchange) throws Exception { 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);
}
} }
} }

Loading…
Cancel
Save