|
我模仿写了一个 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)}")
``` |
|