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