admin 发表于 2024-9-19 21:58:30

有人熟悉Playwright吗?

我模仿写了一个 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)}")
```
页: [1]
查看完整版本: 有人熟悉Playwright吗?