如何在Cypress中测试提交AEM默认验证码服务?
测试AEM默认内置验证码的可行方案
针对AEM内置验证码的测试需求,这里提供几个实用思路和变通方法:
一、测试环境临时禁用验证码
这是最直接的方式,仅适用于测试环境:
- 登录AEM的OSGi配置界面(路径:
/system/console/configMgr) - 找到
Default Captcha Service配置项 - 将“Enabled”选项改为
false,保存后所有表单的内置验证码会被禁用,测试时无需输入即可提交
如果是基于项目的配置,也可以在CRXDE Lite中修改项目下的配置文件/apps/[你的项目路径]/config/com.adobe.cq.captcha.impl.DefaultCaptchaService.cfg.json,将enabled字段设为false。
二、单元测试中Mock验证码验证逻辑
如果是编写后端单元测试,可以直接Mock AEM的CaptchaService,让验证始终通过:
import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import com.adobe.cq.captcha.CaptchaService; import org.junit.jupiter.api.Test; import static org.mockito.Mockito.when; import static org.mockito.ArgumentMatchers.anyString; @ExtendWith(MockitoExtension.class) public class FormSubmitTest { @Mock private CaptchaService captchaService; @Test public void testValidFormSubmit() { // 模拟验证码验证通过 when(captchaService.validate(anyString(), anyString())).thenReturn(true); // 执行表单提交的测试逻辑 // ... } }
三、UI自动化测试的两种处理方式
1. 从会话中获取真实验证码值
AEM会把生成的验证码存储在用户会话的CaptchaInfo对象中,测试时可以通过以下方式获取:
- 基于Java的自动化测试(如Selenium)可部署测试专用Servlet,暴露会话中的验证码值(仅测试环境使用)
- 或直接在测试代码中调用AEM后台API,获取当前会话的验证码内容
2. OCR识别验证码图片
使用Tesseract等OCR工具识别验证码图片文本,再自动填入输入框。这种方式稳定性稍差,适合干扰较少的验证码场景,示例代码(Python + Selenium + Tesseract):
from selenium import webdriver import pytesseract from PIL import Image driver = webdriver.Chrome() driver.get("你的表单页面URL") # 截取验证码图片 captcha_img = driver.find_element_by_id("captcha-image") captcha_img.screenshot("captcha.png") # OCR识别验证码 captcha_text = pytesseract.image_to_string(Image.open("captcha.png")) # 填入验证码输入框 driver.find_element_by_id("captcha-input").send_keys(captcha_text)
附:AEM Forms验证码功能官方说明(翻译)
AEM Forms的验证码功能用于拦截机器人自动提交表单,支持内置验证码和Google reCaptcha两种模式:
内置验证码配置步骤
- 登录AEM控制台,进入工具 > 表单 > 配置浏览器
- 选择目标表单配置,切换到验证码标签页
- 选择“内置验证码”,可配置以下参数:
- 验证码长度:设置验证码的字符数量(默认6位)
- 字符集:指定验证码使用的字符类型(如仅数字、大小写字母混合)
- 干扰线数量:设置验证码图片中的干扰线条数,提升防机器人能力
- 保存配置后,对应表单会自动启用内置验证码验证
内置验证码验证流程
- 服务器生成验证码图片,同时将验证码的真实值存储在用户会话中
- 用户在表单中输入验证码并提交
- 服务器从会话中取出存储的验证码值,与用户输入内容对比,验证通过则处理表单提交请求
内容的提问来源于stack exchange,提问作者Mag
相关产品推荐
相关产品推荐

