Реализация:
// Для разработки/тестирования отключаем капчу
if (environment.equals("test")) {
System.setProperty("captcha.bypass", "true");
}
Преимущества:
Недостатки:
Пример:
// Ввод заранее известного тестового значения капчи
driver.findElement(By.id("captcha-input")).sendKeys("TEST1234");
Процесс:
Пример кода:
// 1. Получаем изображение капчи
WebElement captcha = driver.findElement(By.cssSelector(".captcha-img"));
File screenshot = captcha.getScreenshotAs(OutputType.FILE);
// 2. Отправляем в сервис распознавания
CaptchaService service = new AntiCaptchaService("API_KEY");
String captchaText = service.solveCaptcha(screenshot);
// 3. Вводим результат
driver.findElement(By.id("captcha")).sendKeys(captchaText);
Преимущества:
Недостатки:
Для reCAPTCHA:
// Добавление тестовой куки для bypass reCAPTCHA
driver.manage().addCookie(new Cookie("TEST_COOKIE", "SKIP_RECAPTCHA"));
Через конфигурацию:
# test.properties
captcha.enabled=false
Тестовые режимы - лучший выбор для интеграционных тестов:
Сервисы распознавания - для end-to-end тестов с реальной капчей:
Рекомендация: Для большинства тестовых сценариев предпочтительно использовать первый подход (тестовые режимы), так как он надежнее, быстрее и не требует внешних зависимостей. Сервисы распознавания стоит применять только для узкого круга критически важных e2e-тестов.