一元网络论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 94|回复: 0

有人熟悉Playwright吗?

[复制链接]

2万

主题

2万

帖子

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
89682
发表于 2024-9-19 21:58:30 | 显示全部楼层 |阅读模式
我模仿写了一个 B 站自动分享视频的代码,但定位元素好像有问题。代码中, `self.new_page.wait_for_selector('button.share-btn.clickable', timeout=15000)` 一直报错,但我检查了 B 站分享页面,定位应该没问题。
```python
try:
    # 等待新页面打开
    with self.context.expect_page() as self.new_page_info:
        # 点击“分享视频”按钮
        self.page.locator('//*[@id="FBBox"]/a/font').click()
    # 获取新页面
    self.new_page = self.new_page_info.value
    # 设置新页面的窗口大小
    self.new_page.set_viewport_size({'width': 1366, 'height': 768})
    # 注入防检测脚本
    js = """Object.defineProperties(navigator, {webdriver:{get)=>undefined}});"""
    self.new_page.add_init_script(js)
    # 等待新页面加载完成
    self.new_page.wait_for_load_state()
    # 打印新页面的标题
    print(f'{self.get_time()} 标题:{self.new_page.title()}')
    # 等待并点击分享按钮
    self.new_page.wait_for_selector('#share-btn-outer', timeout=5000)
    self.new_page.locator('#share-btn-outer').click()
    # 等待分享悬浮菜单出现
    self.new_page.wait_for_selector('.share-btn-icon', timeout=10000)
    # 点击目标分享图标(比如“动态”)
    self.new_page.locator('.share-btn:has(span.share-btn-text:has-text("动态"))').click()
    # 等待发布按钮可见并点击
    self.new_page.wait_for_selector('button.share-btn.clickable', timeout=15000)
    # 关闭新页面
    self.new_page.close()
    # 打印分享任务完成信息
    print(f'{self.get_time()} 分享任务完成,校验中请稍后')
    # 随机等待 3-4 秒,模拟用户操作
    time.sleep(randint(3, 4))
except Exception as e:
    print(f"发生错误:{str(e)}")
```
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|一元网络论坛

GMT+8, 2024-11-16 09:02 , Processed in 0.385933 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表