Use Cases

QA ve Yetkili Test için CAPTCHA Çözümü

Test ekiplerinin CAPTCHA korumalı akışları düzenli olarak doğrulaması gerekir. CaptchaAI, bu testleri manuel CAPTCHA etkileşimi olmadan otomatikleştirmenize olanak tanır.


QA Ekipleri CAPTCHA Çözmeye İhtiyaç Duyduğunda

Senaryo CaptchaAI Neden Yardımcı Olur?
Regresyon testi Formların dağıtımdan sonra hala çalıştığını doğrulayın
Uçtan uca test Kullanıcı yolculuklarının tamamını test edin
Yük testi Gerçekçi CAPTCHA akışlarını uygun ölçekte simüle edin
Tarayıcılar arası test Tarayıcılarda CAPTCHA oluşturma işlemlerini doğrulama
Erişilebilirlik testi Engelli kullanıcılar için alternatif akışları test edin

Pytest Entegrasyonu

import pytest
import requests
import time


class CaptchaTestHelper:
    """Helper for solving CAPTCHAs in test environments."""

    def __init__(self, api_key):
        self.api_key = api_key

    def solve_recaptcha(self, sitekey, pageurl, timeout=120):
        """Solve reCAPTCHA and return token."""
        resp = requests.post("https://ocr.captchaai.com/in.php", data={
            "key": self.api_key,
            "method": "userrecaptcha",
            "googlekey": sitekey,
            "pageurl": pageurl,
            "json": 1,
        }, timeout=30)
        result = resp.json()
        assert result.get("status") == 1, f"Submit failed: {result}"
        task_id = result["request"]

        deadline = time.time() + timeout
        time.sleep(10)

        while time.time() < deadline:
            resp = requests.get("https://ocr.captchaai.com/res.php", params={
                "key": self.api_key, "action": "get",
                "id": task_id, "json": 1,
            }, timeout=15)
            data = resp.json()

            if data.get("status") == 1:
                return data["request"]
            if data["request"] != "CAPCHA_NOT_READY":
                raise RuntimeError(f"Solve error: {data['request']}")
            time.sleep(5)

        raise TimeoutError("CAPTCHA solve timeout")


@pytest.fixture(scope="session")
def captcha_helper():
    """Provide CaptchaAI helper for test session."""
    import os
    api_key = os.environ.get("CAPTCHAAI_API_KEY")
    if not api_key:
        pytest.skip("CAPTCHAAI_API_KEY not set")
    return CaptchaTestHelper(api_key)


class TestLoginFlow:
    """Test login flow behind reCAPTCHA."""

    SITEKEY = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
    LOGIN_URL = "https://staging.staging.example.com/qa-login"

    def test_login_with_valid_credentials(self, captcha_helper):
        """Verify login succeeds with valid creds and solved CAPTCHA."""
        token = captcha_helper.solve_recaptcha(self.SITEKEY, self.LOGIN_URL)
        assert token and len(token) > 100

        resp = requests.post(self.LOGIN_URL, data={
            "username": "test_user",
            "password": "test_pass",
            "g-recaptcha-response": token,
        })
        assert resp.status_code == 200
        assert "Welcome" in resp.text

    def test_login_with_invalid_credentials(self, captcha_helper):
        """Verify login fails gracefully with bad creds but valid CAPTCHA."""
        token = captcha_helper.solve_recaptcha(self.SITEKEY, self.LOGIN_URL)

        resp = requests.post(self.LOGIN_URL, data={
            "username": "wrong_user",
            "password": "wrong_pass",
            "g-recaptcha-response": token,
        })
        assert resp.status_code in (200, 401)
        assert "Invalid" in resp.text or "error" in resp.text.lower()

    def test_login_without_captcha_fails(self):
        """Verify login rejects submissions without CAPTCHA."""
        resp = requests.post(self.LOGIN_URL, data={
            "username": "test_user",
            "password": "test_pass",
        })
        assert resp.status_code in (400, 403, 422)

Selenyum E2E Test Modeli

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


@pytest.fixture
def browser():
    """Create browser for testing."""
    options = webdriver.ChromeOptions()
    options.add_argument("--window-size=1920,1080")
    driver = webdriver.Chrome(options=options)
    yield driver
    driver.quit()


class TestRegistrationFlow:
    """Test registration form with CAPTCHA."""

    REG_URL = "https://staging.example.com/register"

    def test_registration_form_submits(self, browser, captcha_helper):
        """Full registration flow with CAPTCHA solving."""
        browser.get(self.REG_URL)

        # Fill form
        browser.find_element(By.ID, "email").send_keys("test@example.com")
        browser.find_element(By.ID, "password").send_keys("SecurePass123!")
        browser.find_element(By.ID, "confirm_password").send_keys("SecurePass123!")

        # Extract sitekey from page
        captcha_div = browser.find_element(By.CSS_SELECTOR, ".g-recaptcha")
        sitekey = captcha_div.get_attribute("data-sitekey")

        # Solve via API
        token = captcha_helper.solve_recaptcha(sitekey, browser.current_url)

        # Inject token
        browser.execute_script("""
            document.querySelector('[name="g-recaptcha-response"]').value = arguments[0];
        """, token)

        # Trigger callback if needed
        callback = captcha_div.get_attribute("data-callback")
        if callback:
            browser.execute_script(f"window['{callback}'](arguments[0]);", token)

        # Submit
        browser.find_element(By.CSS_SELECTOR, "button[type=submit]").click()

        # Verify success
        WebDriverWait(browser, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".success-message"))
        )

    def test_captcha_renders_on_page(self, browser):
        """Verify CAPTCHA widget loads on registration page."""
        browser.get(self.REG_URL)
        captcha = WebDriverWait(browser, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".g-recaptcha, iframe[src*='recaptcha']"))
        )
        assert captcha.is_displayed()

Test Yapılandırması

# conftest.py
import os

# Mark tests that need CAPTCHA solving
def pytest_configure(config):
    config.addinivalue_line(
        "markers", "captcha: tests requiring CAPTCHA solving (may be slow)"
    )


# pytest.ini or pyproject.toml
"""
[tool.pytest.ini_options]
markers = [
    "captcha: tests requiring CAPTCHA solving (may be slow)",
]
"""

Yalnızca CAPTCHA testlerini çalıştırın:

pytest -m captcha -v

CAPTCHA testleri olmadan çalıştırın (hızlı işlem hattı):

pytest -m "not captcha" -v

Uygun Maliyetli Test İpuçları

Strateji Fayda
Hazırlama ortamını kullan Daha düşük CAPTCHA zorluğu
CAPTCHA testlerini her seferde değil, planlandığı gibi çalıştırın API maliyetlerini azaltın
Kesintili testler için önbellek testi sonuçları Gereksiz yeniden çözümlerden kaçının
CAPTCHA'ları yerel olarak atlamak için ortam bayrağını kullanın Geliştirme sırasında maliyetlerden tasarruf edin
Özel CI işinde toplu CAPTCHA testleri Boru hattı başına maliyetleri kontrol edin

SSS

CAPTCHA testlerini çalıştırmanın maliyeti nedir?

Her reCAPTCHA v2'nin maliyeti ~0,003$'dır. 50 CAPTCHA testi içeren bir test paketinin maliyeti çalıştırma başına ~0,15 ABD dolarıdır. Günlük çalıştırma maliyeti ~4,50$/month.

CAPTCHA'ları birim testlerde çözmeli miyim?

Hayır. Birim testlerinde sahte CAPTCHA yanıtları. Yalnızca entegrasyondaki gerçek CAPTCHA'ları ve gerçek ortamlara karşı E2E testlerini çözün.

CaptchaAI'yi diğer test çerçeveleriyle kullanabilir miyim?

Evet. CaptchaAI HTTP tabanlıdır, dolayısıyla Jest, Mocha, JUnit, NUnit vb. gibi herhangi bir dildeki herhangi bir test çerçevesiyle çalışır.


İlgili Kılavuzlar


QA işlem hattınızı otomatikleştirin —testlerinize CaptchaAI ekleyin.

Bu makale için yorumlar devre dışı bırakılmıştır.

İlgili Yazılar

Use Cases CAPTCHA İşleme ile Otomatik Form Gönderimi
Gerçekçi senaryolar, iş akışı tavsiyeleri ve Captcha AI kullanılarak uygulanabilir adımlarla CAPTCHA İşleme ile Otomatik Form Gönderimi için pratik kılavuz.

Gerçekçi senaryolar, iş akışı tavsiyeleri ve Captcha AI kullanılarak uygulanabilir adımlarla CAPTCHA İşleme il...

Apr 21, 2026
Tutorials CaptchaAI ile Otomatik Test Hattı Oluşturun
Doğrudan yeniden kullanılabilir örnekler ve net bir Captcha AI iş akışı ile Captcha AI ile Otomatik Test Hattı Oluşturun için adım adım eğitim.

Doğrudan yeniden kullanılabilir örnekler ve net bir Captcha AI iş akışı ile Captcha AI ile Otomatik Test Hattı...

Apr 30, 2026
Use Cases Kayıt Akışı Testinde CAPTCHA Kullanımı
Gerçekçi senaryolar, iş akışı önerileri ve Captcha AI kullanılarak uygulanabilir adımlarla Kayıt Akışı Testinde CAPTCHA Kullanımı için pratik kılavuz.

Gerçekçi senaryolar, iş akışı önerileri ve Captcha AI kullanılarak uygulanabilir adımlarla Kayıt Akışı Testind...

May 04, 2026