#!/usr/bin/env python3
"""
测试发布宠物相关的小红书内容
"""
import asyncio
from browser.browser import BrowserManager
from loguru import logger
async def test_publish_pet_content():
"""测试发布宠物内容"""
print("="*60)
print("测试发布宠物相关的小红书内容")
print("="*60)
# 使用非无头模式,方便观察和手动操作
browser = BrowserManager(headless=False)
await browser.start()
try:
page = await browser.new_page()
print("\n1. 导航到小红书创作中心...")
await page.goto("https://creator.xiaohongshu.com/publish/publish", timeout=60000)
await page.wait_for_load_state("load", timeout=60000)
await asyncio.sleep(3)
print(" ✓ 页面已加载")
print("\n2. 检查登录状态...")
# 等待页面完全加载
await asyncio.sleep(2)
# 检查是否需要登录
is_login_page = await page.evaluate("""
() => {
return window.location.href.includes('login') ||
document.querySelector('.login-container') !== null;
}
""")
if is_login_page:
print(" ⚠ 需要登录,请在浏览器中完成登录...")
print(" 登录后按 Enter 继续...")
input()
# 重新导航到发布页面
await page.goto("https://creator.xiaohongshu.com/publish/publish", timeout=60000)
await page.wait_for_load_state("load", timeout=60000)
await asyncio.sleep(3)
print(" ✓ 已登录")
print("\n3. 准备发布内容...")
print(" 标题: 我家的小猫咪太可爱了!")
print(" 内容: 今天给我家的小橘猫拍了几张照片,真的太萌了!")
print(" 标签: #宠物 #猫咪 #萌宠")
print("\n4. 等待页面元素加载...")
await asyncio.sleep(3)
# 检查页面结构
page_info = await page.evaluate("""
() => {
return {
url: window.location.href,
title: document.title,
hasUploadArea: !!document.querySelector('[class*="upload"]'),
hasTitleInput: !!document.querySelector('input[placeholder*="标题"]') ||
!!document.querySelector('input[placeholder*="title"]'),
hasContentArea: !!document.querySelector('textarea') ||
!!document.querySelector('[contenteditable="true"]'),
bodyClasses: document.body.className,
mainElements: Array.from(document.querySelectorAll('main, [class*="publish"], [class*="editor"]'))
.map(el => el.className).slice(0, 5)
};
}
""")
print(f"\n 页面信息:")
print(f" - URL: {page_info['url']}")
print(f" - 标题: {page_info['title']}")
print(f" - 有上传区域: {page_info['hasUploadArea']}")
print(f" - 有标题输入: {page_info['hasTitleInput']}")
print(f" - 有内容区域: {page_info['hasContentArea']}")
print("\n5. 手动操作说明:")
print(" 由于小红书的发布页面结构复杂,建议手动完成以下操作:")
print(" 1) 点击上传图片(可以使用任意宠物图片)")
print(" 2) 填写标题: 我家的小猫咪太可爱了!")
print(" 3) 填写内容: 今天给我家的小橘猫拍了几张照片,真的太萌了!#宠物 #猫咪 #萌宠")
print(" 4) 添加话题标签")
print(" 5) 点击发布按钮")
print("\n 完成后按 Enter 继续...")
input()
print("\n6. 检查发布结果...")
current_url = page.url
print(f" 当前 URL: {current_url}")
if "publish" not in current_url or "success" in current_url:
print(" ✅ 发布成功!")
else:
print(" ⚠ 请确认是否发布成功")
print("\n按 Enter 关闭浏览器...")
input()
except Exception as e:
print(f"\n✗ 错误: {e}")
import traceback
traceback.print_exc()
finally:
await browser.close()
print("\n" + "="*60)
if __name__ == "__main__":
asyncio.run(test_publish_pet_content())