Files
ai_mip/test_consultation_message.py

172 lines
5.6 KiB
Python
Raw Normal View History

2026-01-16 22:06:46 +08:00
"""
测试咨询消息发送功能
"""
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="<green>{time:HH:mm:ss}</green> | <level>{level: <8}</level> | <level>{message}</level>",
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()