
Emma Foster
Machine Learning Engineer
Diterbitkan Oct 26, 2026
Diperbarui Oct 26, 2026 · min baca

Sebuah pengujian browser Robot Framework bisa gagal karena halaman kini menampilkan CAPTCHA alih-alih konten yang diharapkan oleh asersi berikutnya. Menaikkan timeout generik tidak menjelaskan perubahan itu. Pemeriksaan CAPTCHA yang spesifik dapat memberi hasil yang berguna: tipe tantangan dan parameter yang dibutuhkan oleh workflow solver yang telah disetujui.
Robot Framework adalah kerangka kerja open-source untuk acceptance testing dan robotic process automation. Sintaks keyword‑nya memungkinkan tim mengekspresikan pemeriksaan sementara pustaka Python mengimplementasikan operasi dasarnya. Tutorial ini menghubungkan sebuah keyword Python ke CapSolver Core SDK resmi dan memverifikasi bahwa Robot menerima hasil deteksi nyata dari sebuah halaman browser.
Deteksi CAPTCHA berada pada checkpoint halaman yang sudah diketahui, sebelum pengujian memperlakukan halaman yang diblokir sebagai respons aplikasi yang normal.
Sebagai contoh, sebuah workflow browser yang diizinkan mengharapkan form pencarian tetapi justru mencapai sebuah tantangan. Pertanyaan pertama yang berguna adalah apakah ada CAPTCHA yang didukung. Hasil pengenalan kemudian dapat menginformasikan langkah berikut yang terkontrol: gunakan integrasi solving yang terdokumentasi, jeda untuk aksi manusia, atau catat kegagalan pengujian yang spesifik.
Ini berbeda dengan memperlakukan setiap elemen yang hilang sebagai CAPTCHA. Halaman juga dapat gagal karena script aplikasinya tidak termuat, routenya berubah, atau selector salah. Jaga deteksi CAPTCHA tetap terpisah dari diagnosis tersebut.
Panduan pengguna Robot Framework mendokumentasikan pustaka pengujian Python dan eksekusi keyword. Pustaka kecil di bawah ini menggunakan titik ekstensi tersebut. Ini adalah contoh integrasi, bukan klaim bahwa Robot Framework dikirim bersama pustaka CapSolver bawaan.
Instal Robot Framework, Playwright, dan Core SDK dalam environment Python yang sama sehingga test runner dapat mengimpor ketiganya.
Contoh ini menggunakan Python 3.12, Robot Framework 7.5, Playwright 1.64.0, dan capsolver-core 0.1.1. Repositori resmi framework ini adalah sumber untuk latar belakang proyek dan rute instalasi yang didukung.
python -m pip install robotframework==7.5 playwright==1.64.0 capsolver-core==0.1.1
python -m playwright install chromium
Jalankan instalasi dan pengujian dengan interpreter yang sama. Kegagalan setup yang umum adalah menginstal pustaka browser dalam satu environment dan menjalankan Robot dari environment lain. Impor kemudian gagal sebelum halaman pernah dibuka.
Contoh ini hanya mendeteksi sebuah widget dan membaca parameternya yang publik. Solving berbayar akan membutuhkan kunci API solver yang valid, kesiapan akun, dan workflow terpisah yang disetujui. Tidak ada hasil berbayar yang dihasilkan oleh pengujian di bawah ini.
Buat index.html di direktori fixture khusus dan layani dari mesin Anda sendiri.
Google mendokumentasikan kunci uji publik reCAPTCHA v2 di panduan pengujian otomatis‑nya. Fixture menggunakan kunci tersebut untuk memuat widget yang dapat dikenali tanpa menggunakan konfigurasi situs produksi.
<!doctype html><html><head><title>Owned CAPTCHA test fixture</title></head><body>
<h1>Owned development page</h1>
<div class="g-recaptcha" data-sitekey="6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI"></div>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</body></html>
Mulai server lokal dari direktori tersebut:
python -m http.server 8766 --bind 127.0.0.1
Script widget tetap membutuhkan akses jaringan ke Google. Jika widget fixture tidak termuat, periksa prasyarat itu sebelum menafsirkan hasil deteksi kosong. Server lokal mengekspos fixture hanya pada loopback interface.
Kunci uji berguna untuk memeriksa wiring dan pengenalan. Kunci ini bukan bukti representatif untuk tingkat kesulitan tantangan produksi, performa solving berbayar, atau penerimaan aplikasi. Jaga pengujian‑pengujian terpisah itu dalam checklist rilis.
Simpan pustaka berikut sebagai CaptchaCheck.py di sebelah berkas pengujian Robot Anda.
Pustaka ini memanggil metode get_captcha_info yang terdokumentasi dari Core SDK. Pembungkus khusus Robot sengaja dibuat kecil: ia memulai event loop, membuka browser, membaca informasi, dan menutup browser di blok finally.
import asyncio
from robot.api.deco import keyword
from capsolver_core import create_capsolver
from playwright.async_api import async_playwright
@keyword("Inspect CAPTCHA Page")
def inspect_captcha_page(url):
return asyncio.run(_inspect(url))
async def _inspect(url):
async with async_playwright() as pw:
browser = await pw.chromium.launch(headless=True)
try:
page = await browser.new_page()
await page.goto(url, wait_until="networkidle")
async with create_capsolver() as cap:
infos = await cap.get_captcha_info(page)
return [{"type": item.type.value, "url": item.website_url,
"site_key": item.website_key} for item in infos]
finally:
await browser.close()
Daftar yang dikembalikan berisi dictionary biasa, yang nyaman untuk asersi Robot. Daftar kosong berarti inspeksi ini tidak mengembalikan informasi yang cocok. Daftar kosong tidak boleh diubah menjadi klaim bahwa tidak ada tantangan yang mungkin ada di mana pun dalam workflow.
Penantian pemuatan halaman sesuai untuk fixture kecil ini. Aplikasi produksi dengan aktivitas jaringan yang persisten mungkin membutuhkan kondisi kesiapan lain yang spesifik halaman. Jangan menyalin networkidle ke setiap aplikasi dan menganggapnya membuktikan bahwa widget yang relevan telah selesai dirender.
Tukarkan Kode Bonus CapSolver Anda
Tingkatkan anggaran automasi Anda seketika!
Gunakan kode bonus CAP26 saat melakukan top up akun CapSolver untuk mendapatkan bonus 5% tambahan di setiap pengisian — tanpa batas.
Tukarkan sekarang di Dashboard CapSolver
Simpan berikut ini sebagai captcha.robot di sebelah pustaka dan jalankan ketika server fixture lokal tersedia.
*** Settings ***
Library CaptchaCheck.py
Library Collections
*** Variables ***
${PAGE_URL} http://127.0.0.1:8766/
*** Test Cases ***
Identify The Fixture CAPTCHA
${items}= Inspect CAPTCHA Page ${PAGE_URL}
Should Not Be Empty ${items}
${first}= Get From List ${items} 0
Should Be Equal ${first}[type] reCaptchaV2
Log ${items}
python -m robot --outputdir results captcha.robot
Pengujian menegaskan bahwa detector mengembalikan hasil dan bahwa fixture diidentifikasi sebagai reCaptchaV2. Log‑nya berisi URL halaman yang dikembalikan dan sitekey publik. Laporan yang dihasilkan Robot memberi tahu Anda apakah asersi tersebut lolos.
Kelulusan membuktikan rantai spesifik: Robot memanggil keyword Python Anda, Playwright membuka fixture, Core SDK menginspeksi halaman nyata, dan data yang dikembalikan mencapai asersi Robot. Kode menutup browser bahkan ketika terjadi pengecualian.
Bacalah kegagalan pada tahap tempat kegagalan terjadi. Error impor adalah masalah dependensi. Error navigasi adalah masalah akses halaman. Timeout dapat berarti fixture tidak pernah settle. Gagalnya asersi tipe berarti data yang dikembalikan tidak cocok dengan ekspektasi fixture. Kondisi‑kondisi ini membutuhkan koreksi yang berbeda.
Deteksi memasok informasi untuk keputusan solver, tetapi langkah berikutnya harus mempertahankan konteks halaman yang dibutuhkan oleh task.
Panduan SDK resmi menggambarkan solving di browser sebagai operasi terpisah. Jika workflow produksi Anda perlu menyelesaikan dan melanjutkan di halaman yang sama, pertahankan halaman itu dan konteks browsernya tetap hidup sepanjang operasi. Keyword diagnostik dalam artikel ini menutup browsernya dan karenanya bukan langkah lanjutan drop‑in untuk sesi login yang sudah ada.
Tim yang sudah menggunakan SeleniumLibrary atau Robot Framework Browser juga harus membedakan browser aktif mereka dari yang dibuka oleh contoh ini. Berbagi URL tidak berarti berbagi cookie, interaksi sebelumnya, atau objek halaman. Hindari mengklaim bahwa tantangan diselesaikan di browser aktif pengujian ketika pekerjaan sebenarnya terjadi di browser lain.
Untuk pengujian regresi situs milik sendiri yang biasa, kunci uji dari provider mungkin pilihan yang lebih sederhana. Gunakan jalur solver nyata hanya ketika tujuan pengujian menuntut validasi integrasi tersebut. Panduan kunci uji reCAPTCHA menjelaskan batas itu dengan lebih rinci.
Gunakan checkpoint kecil dan eksplisit untuk membedakan CAPTCHA yang dikenali dari kegagalan elemen generik. CapSolver menyediakan kemampuan deteksi dalam contoh ini; Robot Framework mengubah hasilnya menjadi asersi pengujian yang dapat dibaca. Tambahkan solving berbayar hanya sebagai langkah yang diverifikasi terpisah dengan kepemilikan halaman yang benar dan pemeriksaan outcome aplikasi.
T: Apakah pengujian Robot ini menyelesaikan CAPTCHA?
Tidak. Pengujian ini mendeteksi CAPTCHA pada fixture dan mengembalikan parameternya yang publik. Pengujian tidak meminta solusi berbayar atau memverifikasi pengiriman form produksi.
T: Apakah ini plugin resmi Robot Framework?
Tidak. Pembungkus keyword Python adalah contoh yang dibangun di atas mekanisme pustaka Robot Framework yang terdokumentasi dan Core SDK resmi. Pembungkus persisnya disertakan agar perilakunya dapat diinspeksi.
T: Bisakah saya menggunakan keyword yang sama di dalam pengujian SeleniumLibrary?
Anda bisa memanggil keyword tersebut, tetapi keyword akan membuka browser Playwright terpisah. Keyword tidak menginspeksi atau melanjutkan sesi browser SeleniumLibrary. Integrasi sesi yang sudah ada memerlukan handoff eksplisit yang didukung.
T: Mengapa fixture mengembalikan daftar kosong?
Periksa apakah script widget termuat, apakah halaman yang diharapkan sedang dilayani, dan apakah SDK mendukung tantangan yang ada. Hasil kosong saja tidak mengidentifikasi penyebabnya.
T: Apakah saya memerlukan kunci API solver untuk contoh ini?
Pemeriksaan deteksi parameter yang didemonstrasikan tidak mengirimkan task solving berbayar. Langkah solving produksi membutuhkan kredensial dan prasyarat yang terdokumentasi untuk operasi tersebut.
T: Haruskah setiap pengujian otomatis memanggil solver CAPTCHA?
Tidak. Gunakan mekanisme uji dari provider untuk pengujian regresi rutin situs milik sendiri bila sesuai. Cadangkan pengujian integrasi solver untuk workflow yang memang ingin Anda validasi, dan jaga agar tetap terbatasi.

Emma Foster
Machine Learning Engineer
Where machine learning meets practical AI tooling.
TENTANG PENULIS
Cari tahu mengapa CAPTCHA yang terlihat terlewat di dalam iframe. Periksa konteks dokumen, pemuatan widget, parameter situs, dan pengalihan browser ke pemecah CAPTCHA Anda.

Rencanakan pengujian CAPTCHA Node.js dengan kunci uji vendor, pemeriksaan solver yang terkontrol, dan asersi yang jelas. Pisahkan regresi formulir dari kegagalan penyelesaian eksternal.
