""" 测试咨询消息发送功能 """ from loguru import logger from adspower_client import AdsPowerClient from ad_automation import MIPAdAutomation from config import Config from db_manager import SiteManager, ClickManager, InteractionManager import sys # 配置日志 logger.remove() logger.add( sys.stdout, format="{time:HH:mm:ss} | {level: <8} | {message}", level="INFO" ) def main(): """测试主流程""" # 测试URL(请替换为实际的MIP页面) TEST_URL = "https://health.baidu.com/m/detail/ar_2366617956693492811" logger.info("="*70) logger.info("测试咨询消息发送功能") logger.info("="*70) logger.info(f"当前环境: {Config.ENV}") logger.info(f"测试URL: {TEST_URL}") logger.info("") client = AdsPowerClient() try: # 1. 初始化数据库,添加测试站点 logger.info("步骤1: 初始化测试站点") logger.info("-"*70) site_mgr = SiteManager() site = site_mgr.get_site_by_url(TEST_URL) if not site: site_id = site_mgr.add_site( site_url=TEST_URL, site_name="测试站点-咨询消息", site_dimension="医疗健康" ) logger.info(f"✅ 创建测试站点: site_id={site_id}") else: site_id = site['id'] logger.info(f"✅ 使用已存在站点: site_id={site_id}") logger.info("") # 2. 获取当前环境的Profile logger.info("步骤2: 获取浏览器环境") logger.info("-"*70) group_id = client.get_group_by_env() if not group_id: logger.error("未找到对应环境的分组") return result = client.list_profiles(group_id=group_id) if not result or not result.get('data', {}).get('list'): logger.error("未找到可用的浏览器环境") return profile = result['data']['list'][0] profile_id = profile['profile_id'] logger.info(f"✅ 使用Profile: {profile['name']} (ID: {profile_id})") logger.info("") # 3. 启动浏览器 logger.info("步骤3: 启动浏览器") logger.info("-"*70) browser_info = client.start_browser(user_id=profile_id) if not browser_info: logger.error("启动浏览器失败") return logger.info("✅ 浏览器启动成功") logger.info("") # 4. 连接浏览器 logger.info("步骤4: 连接浏览器") logger.info("-"*70) browser = client.connect_browser(browser_info) if not browser: logger.error("连接浏览器失败") return page = client.get_page(browser) if not page: logger.error("获取页面失败") return logger.info("✅ 浏览器连接成功") logger.info("") # 5. 执行广告点击和消息发送 logger.info("步骤5: 执行广告点击和消息发送") logger.info("-"*70) automation = MIPAdAutomation(page) click_success, has_reply = automation.check_and_click_ad(TEST_URL, site_id=site_id) if click_success: logger.info("✅ 广告点击成功") if has_reply: logger.info("✅ 收到了医生回复") else: logger.info("⚠️ 未收到医生回复(可能需要等待更长时间)") else: logger.warning("❌ 广告点击失败") logger.info("") # 6. 查询数据库记录 logger.info("步骤6: 查询数据库记录") logger.info("-"*70) # 查询点击记录 click_mgr = ClickManager() clicks = click_mgr.get_clicks_by_site(site_id, limit=5) logger.info(f"点击记录数: {len(clicks)}") if clicks: last_click = clicks[0] logger.info(f"最新点击: ID={last_click['id']}, 时间={last_click['click_time']}") # 查询互动记录 interaction_mgr = InteractionManager() interactions = interaction_mgr.get_interactions_by_site(site_id, limit=5) logger.info(f"互动记录数: {len(interactions)}") if interactions: last_interaction = interactions[0] logger.info(f"最新互动: ID={last_interaction['id']}") logger.info(f" 发送内容: {last_interaction['reply_content']}") logger.info(f" 收到回复: {'是' if last_interaction['response_received'] else '否'}") logger.info("") # 7. 保持浏览器运行,等待手动检查 logger.info("="*70) logger.info("测试完成!浏览器保持运行,可手动检查结果") logger.info("按 Ctrl+C 停止测试并关闭浏览器") logger.info("="*70) input("\n按回车键停止测试...") except KeyboardInterrupt: logger.info("\n用户中断测试") except Exception as e: logger.error(f"测试异常: {str(e)}") import traceback traceback.print_exc() finally: # 清理资源 try: if 'profile_id' in locals(): client.stop_browser(user_id=profile_id) logger.info("✅ 浏览器已关闭") except Exception as e: logger.warning(f"关闭浏览器失败: {str(e)}") if __name__ == "__main__": main()