Files
broswer-automation/agent-livekit/debug_form_detection.py
nasir@endelospay.com d97cad1736 first commit
2025-08-12 02:54:17 +05:00

125 lines
4.5 KiB
Python

#!/usr/bin/env python3
"""
Debug script to test form detection on QuBeCare login page
"""
import asyncio
import logging
import json
from mcp_chrome_client import MCPChromeClient
# Simple config for testing
def get_test_config():
return {
'mcp_server_type': 'http',
'mcp_server_url': 'http://127.0.0.1:12306/mcp',
'mcp_server_command': None,
'mcp_server_args': []
}
async def debug_qubecare_form():
"""Debug form detection on QuBeCare login page"""
# Set up logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
# Initialize MCP Chrome client
config = get_test_config()
client = MCPChromeClient(config)
try:
# Navigate to the QuBeCare login page
logger.info("Navigating to QuBeCare login page...")
result = await client._navigate_mcp("https://app.qubecare.ai/provider/login")
logger.info(f"Navigation result: {result}")
# Wait for page to load
await asyncio.sleep(3)
# Try to get form fields using different methods
logger.info("=== Method 1: get_form_fields ===")
form_fields = await client.get_form_fields()
logger.info(f"Form fields result: {form_fields}")
logger.info("=== Method 2: get_cached_input_fields ===")
cached_fields = await client.get_cached_input_fields()
logger.info(f"Cached input fields: {cached_fields}")
logger.info("=== Method 3: refresh_input_fields ===")
refresh_result = await client.refresh_input_fields()
logger.info(f"Refresh result: {refresh_result}")
# Try to get page content to see what's actually there
logger.info("=== Method 4: Get page content ===")
try:
page_content = await client._call_mcp_tool("chrome_get_web_content", {
"selector": "body",
"textOnly": False
})
logger.info(f"Page content structure: {json.dumps(page_content, indent=2)}")
except Exception as e:
logger.error(f"Error getting page content: {e}")
# Try to find specific input elements
logger.info("=== Method 5: Look for specific input selectors ===")
common_selectors = [
"input[type='email']",
"input[type='password']",
"input[name*='email']",
"input[name*='password']",
"input[name*='username']",
"input[name*='login']",
"#email",
"#password",
"#username",
".email",
".password",
"input",
"form input"
]
for selector in common_selectors:
try:
element_info = await client._call_mcp_tool("chrome_get_web_content", {
"selector": selector,
"textOnly": False
})
if element_info and element_info.get("content"):
logger.info(f"Found elements with selector '{selector}': {element_info}")
except Exception as e:
logger.debug(f"No elements found for selector '{selector}': {e}")
# Try to get interactive elements
logger.info("=== Method 6: Get all interactive elements ===")
try:
interactive = await client._call_mcp_tool("chrome_get_interactive_elements", {
"types": ["input", "textarea", "select", "button"]
})
logger.info(f"Interactive elements: {json.dumps(interactive, indent=2)}")
except Exception as e:
logger.error(f"Error getting interactive elements: {e}")
# Check if page is fully loaded
logger.info("=== Method 7: Check page load status ===")
try:
page_status = await client._call_mcp_tool("chrome_execute_script", {
"script": "return {readyState: document.readyState, title: document.title, url: window.location.href, forms: document.forms.length, inputs: document.querySelectorAll('input').length}"
})
logger.info(f"Page status: {page_status}")
except Exception as e:
logger.error(f"Error checking page status: {e}")
except Exception as e:
logger.error(f"Error during debugging: {e}")
finally:
# Clean up
try:
await client.close()
except:
pass
if __name__ == "__main__":
asyncio.run(debug_qubecare_form())