引言
Playwright 是一个自动化测试工具,可以模拟用户在浏览器上的操作。
思路
采用Playwright中的异步API,实现自动删除所有微博脚本,并捕获异常从而实现检测已经删除所有微博的脚本
步骤
安装 Playwright
首先,安装Playwright:
pip install playwright
安装完 Playwright 后,运行以下命令以安装浏览器的二进制文件:
playwright install
手动登录微博
![图片[1]-使用Playwright删除微博所有帖子](https://yunyicloud.cn/wp-content/uploads/2024/08/20240810153503807-Screenshot-2024-08-10-143408.png)
编写脚本
新建脚本,初始化playwright
选中这里复制CSS选择器路径,之后在locator方法中会用到,实现查找节点
![图片[2]-使用Playwright删除微博所有帖子](https://yunyicloud.cn/wp-content/uploads/2024/08/20240810153516550-Screenshot-2024-08-10-145306-1024x708.png)
![图片[3]-使用Playwright删除微博所有帖子](https://yunyicloud.cn/wp-content/uploads/2024/08/20240810153523193-Screenshot-2024-08-10-145349-1024x1015.png)
如此重复直到删除一个帖子
try:
# 循环删除所有消息
while True:
await page.locator("#scroller > div.vue-recycle-scroller__item-wrapper > div:nth-child(1) > div > article > div > header > div.woo-box-flex > div.woo-pop-wrap.morepop_more_3ssan > span > div > i").click() # 这里是CSS选择器定位,也可以采用xpath或者以下的playwrightAPI定位
# 这里是Playwright录制实现的定位,有关录制请查看 “相关链接”
await page.get_by_role("button", name="删除").click()
await page.get_by_role("button", name="确定").click()
except Exception as e:
# 有异常代表没有帖子了已经,删除完毕
print("处理完成")
# 执行异步函数
asyncio.run(delete_all_messages())
执行脚本
将上面的代码保存为 delete_weibo.py
,并使用命令 python delete_weibo.py
运行。
注意事项
Playwright可以录入脚本,具体可以参考以下链接
相关链接
Installation | Playwright Python
从零开始:使用 Playwright 脚本录制实现自动化测试-阿里云开发者社区 (aliyun.com)
整体代码
# -*- coding: utf-8 -*-
from playwright.async_api import async_playwright
import asyncio
async def delete_all_messages():
asp = async_playwright() # 获取异步 playwright 对象
ap = await asp.start() # 启动 playwright
browser = await ap.chromium.launch_persistent_context(
channel="chrome", # 指定浏览器,这里使用chrome,还可以选择 firefox、webkit、msedge
headless=False, # 无头模式,就是是否显示浏览器界面
user_data_dir=r'C:\Users\xiaof\AppData\Local\Google\Chrome\User Data', # 指定用户数据目录,用于保存登录信息,每个浏览器保存目录都不同
args=['--start-maximized'], # 启动参数,这里设置浏览器最大化
no_viewport=False, # 禁用视窗
devtools=False # 进入浏览器后不启用开发者工具
) # 启动浏览器,配置参数
page = await browser.new_page() # 打开新页面
await page.goto('https://weibo.com/u/7382469455?tabtype=feed') # 增加超时时间
try:
# 循环删除所有消息
while True:
await page.locator("#scroller > div.vue-recycle-scroller__item-wrapper > div:nth-child(1) > div > article > div > header > div.woo-box-flex > div.woo-pop-wrap.morepop_more_3ssan > span > div > i").click()
await page.get_by_role("button", name="删除").click()
await page.get_by_role("button", name ="确定").click()
except Exception as e:
# 有异常代表没有帖子了已经,删除完毕
print("处理完成")
# 执行异步函数
asyncio.run(delete_all_messages())
没有回复内容