Chrome 128版本下用Selenium取消正在下载任务的问题求助
在Chrome 128中用Selenium取消下载任务
你已经成功触发了更多操作的下拉菜单,接下来需要定位到下拉菜单里的“取消”选项并点击。由于Chrome下载页面的元素嵌套在多层Shadow DOM中,需要继续通过shadowRoot逐层获取目标元素:
完整代码示例
# 触发更多操作下拉菜单(你已实现的代码) w.driver.execute_script(""" document.querySelector('downloads-manager').shadowRoot .querySelector('#downloadsList downloads-item').shadowRoot .querySelector('#more-actions').click(); """) # 等待下拉菜单渲染完成(可选但推荐,避免元素未就绪) w.driver.execute_script("setTimeout(() => {}, 500);") # 点击下拉菜单中的“取消”选项 w.driver.execute_script(""" document.querySelector('downloads-manager').shadowRoot .querySelector('#downloadsList downloads-item').shadowRoot .querySelector('cr-menu').querySelector('menuitem[label="取消"]').click(); """)
关键说明
- 下拉菜单的容器是
cr-menu标签,其中“取消”选项对应带label="取消"属性的menuitem元素(若为英文环境,label值需改为"Cancel")。 - 加入
setTimeout是为了给下拉菜单的渲染留缓冲时间,避免因元素未加载完成出现报错。 - 如果页面存在多个下载任务,需要调整
downloads-item的选择器来定位特定任务(比如通过文件名、下载状态筛选),当前代码默认操作列表中的第一个任务。
内容的提问来源于stack exchange,提问作者Tony Hasler
相关产品推荐
相关产品推荐

