Document GemLogin search and browser inspection method #1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
จุดประสงค์
บันทึกวิธีที่ MCP bridge ใช้ค้นหาและอ่านข้อมูลจากหน้าเว็บผ่าน GemLogin เพื่อให้เข้าใจว่าเหตุใดระบบจึงรู้ว่าหน้าบราวเซอร์มีข้อมูลอะไร และควรคลิกหรือกรอกตรงไหน
1. วิธีค้นหาผ่าน GemLogin
MCP bridge ไม่ได้อ่านฐานข้อมูลภายในของเว็บไซต์และไม่ได้ใช้ cookie/password เพื่อดึงข้อมูลโดยตรง แต่ควบคุม browser profile ที่ GemLogin เปิดให้ผ่าน Local API และ Chrome DevTools Protocol (CDP)
ลำดับการทำงานหลัก:
jev_gemlogin_start(profile_id)เพื่อเริ่ม GemLogin profile และเชื่อม Playwright เข้ากับ CDP address ที่ GemLogin คืนมาjev_gemlogin_navigate(url)เพื่อเปิด search engine, หน้าเว็บเป้าหมาย หรือ URL ของผลการค้นหา โดยอนุญาตเฉพาะhttp/httpsjev_gemlogin_inspect()อ่านสถานะหลังเปิดหน้าและหลังการเปลี่ยนหน้าjev_gemlogin_typeกรอกคำค้นใน textbox/combobox แล้ว inspect อีกครั้ง หรือใช้jev_gemlogin_clickคลิกผลลัพธ์/ปุ่มที่ระบุได้ดังนั้น “การค้นหา” คือการใช้ browser ที่เปิดโดย GemLogin ไปยัง search engine หรือเว็บเป้าหมาย แล้วอ่านผลลัพธ์ที่แสดงอยู่จริงบนหน้าเว็บ ไม่ใช่การเรียก API ลับของเว็บไซต์
2. วิธีที่ bridge อ่านข้อมูลจากหน้า browser
การอ่านทำใน
BrowserSession.inspect()โดยใช้ Playwright:page.urlpage.title()page.locator("body").inner_text()a, button, input, textarea, select, [role]role,name,textและboxaเป็นlink,buttonเป็นbutton, input search เป็นsearchbox, textarea เป็นtextboxaria-label,placeholder,titleหรือข้อความภายใน element ตามลำดับตัวอย่างข้อมูลที่ inspect คืน:
3. ทำไมระบบรู้ว่าต้อง click ตรงไหน
ระบบไม่ได้เดาตำแหน่งจากภาพอย่างเดียว และไม่ได้คลิกพิกัดสุ่ม แต่ใช้ semantic locator ของ Playwright:
ตัวอย่าง ถ้า inspect พบ:
ก็สามารถเรียก:
การระบุด้วย role + accessible name ทำให้เลือกปุ่ม/ลิงก์จากโครงสร้าง DOM และ accessibility metadata ของหน้าเว็บ ไม่ต้องพึ่งตำแหน่ง pixel ซึ่งอาจเปลี่ยนเมื่อหน้าจอหรือ layout เปลี่ยน
สำหรับการกรอกข้อมูลใช้หลักการเดียวกัน:
4. บทบาทของ Jev
jev_decide(instruction, questions)จะส่ง browser state ที่ inspect ได้ พร้อมคำถามและตัวเลือกที่ caller กำหนด ไปให้ Jev เลือกคำตอบแบบ typed decisionJev มีหน้าที่ช่วยตัดสินใจจากตัวเลือกที่กำหนด เช่น:
Jev ไม่ได้ execute arbitrary code และไม่ได้คลิกเองโดยอัตโนมัติ ผลการตัดสินใจต้องถูกตรวจสอบก่อน แล้วจึงเรียก browser action ที่จำกัดไว้ เช่น click หรือ type
5. วิธีอ่านข้อมูลเพื่อทำรายงานให้เชื่อถือได้
สำหรับงานค้นคว้า การอ่านหน้าเว็บควรทำซ้ำเป็นรอบ:
6. ขอบเขตและข้อจำกัด
inspectจำกัด page text ไว้สูงสุด 12,000 ตัวอักษร และ interactive elements สูงสุด 300 รายการไฟล์อ้างอิงในโปรเจกต์
jev_gemlogin_bridge/browser.py— เปิด profile, inspect DOM/page และ click/typejev_gemlogin_bridge/contracts.py— จำกัด/ทำความสะอาด browser state และตรวจ URLjev_gemlogin_bridge/server.py— ประกาศ MCP tools และเชื่อม BrowserSession กับ JevClientjev_gemlogin_bridge/jev.py— ส่ง state/questions ไปยัง Jev API