From bdf0ce7e0b186df7041126a4bd88d6231ea8a3d1 Mon Sep 17 00:00:00 2001 From: Yan Date: Fri, 4 Apr 2025 16:24:03 +0800 Subject: [PATCH] v3.0.2 Adding some clicking events in login processor --- conf/springboot.yml | 5 ++ conf2/springboot.yml | 5 ++ pom.xml | 2 +- .../sbcamel/processor/LoginProcessor.java | 54 ++++++++++++++++++- 4 files changed, 64 insertions(+), 2 deletions(-) diff --git a/conf/springboot.yml b/conf/springboot.yml index 3dc1922..c3cd420 100644 --- a/conf/springboot.yml +++ b/conf/springboot.yml @@ -23,6 +23,11 @@ app: username: "app" password: "app" mapper-package: "com.example.sbcamel.mapper" + htmlunit: + login-url: "" + login-btn-selector: "" + home-page-selector: "" + logout-btn-selector: "" eureka: client: diff --git a/conf2/springboot.yml b/conf2/springboot.yml index 6cef5d2..6cf157a 100644 --- a/conf2/springboot.yml +++ b/conf2/springboot.yml @@ -23,6 +23,11 @@ app: username: "app" password: "app" mapper-package: "com.example.sbcamel.mapper" + htmlunit: + login-url: "" + login-btn-selector: "" + home-page-selector: "" + logout-btn-selector: "" eureka: client: diff --git a/pom.xml b/pom.xml index 9ff49e2..847e7a9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.example camel-springboot-activemq6-example - 3.0.1 + 3.0.2 camel-springboot-activemq6-example diff --git a/src/main/java/com/example/sbcamel/processor/LoginProcessor.java b/src/main/java/com/example/sbcamel/processor/LoginProcessor.java index 3a39ec3..e4c209d 100644 --- a/src/main/java/com/example/sbcamel/processor/LoginProcessor.java +++ b/src/main/java/com/example/sbcamel/processor/LoginProcessor.java @@ -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); + } } }