Files
ai_mip/test_consultation_message.py
2026-01-16 22:06:46 +08:00

172 lines
5.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
测试咨询消息发送功能
"""
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()