first commit
This commit is contained in:
124
agent-livekit/debug_form_detection.py
Normal file
124
agent-livekit/debug_form_detection.py
Normal file
@@ -0,0 +1,124 @@
|
||||
#!/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())
|
Reference in New Issue
Block a user