如何通过Selenium点击Chrome打印预览窗口的取消按钮?
如何点击Chrome打印预览窗口的取消按钮
以下是几种适配新版Chrome的可行解决方案:
方法一:用键盘快捷键触发取消
Chrome打印预览窗口支持通过Esc键快速关闭,直接用Selenium模拟按键即可:
from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By import time driver = webdriver.Chrome() driver.get("目标页面URL") # 触发打印(以Ctrl+P为例) driver.find_element(By.TAG_NAME, "body").send_keys(Keys.CONTROL, "p") time.sleep(2) # 等待预览窗口加载完成 # 按下Esc关闭窗口 driver.find_element(By.TAG_NAME, "body").send_keys(Keys.ESCAPE)
方法二:修改Chrome启动参数,跳过打印预览
如果不需要弹出预览窗口,可以通过启动参数直接禁用或自动处理打印流程:
from selenium import webdriver chrome_options = webdriver.ChromeOptions() # 配置自动跳过预览,按指定方式处理打印 chrome_options.add_experimental_option("prefs", { "printing.print_preview_sticky_settings.appState": '{"recentDestinations":[{"id":"Save as PDF","origin":"local","account":""}],"selectedDestinationId":"Save as PDF","version":2}' }) driver = webdriver.Chrome(options=chrome_options) driver.get("目标页面URL") # 触发打印后会直接跳过预览,按配置自动处理 driver.execute_script("window.print();")
方法三:通过Chrome DevTools命令关闭预览
利用Chrome DevTools的API直接关闭打印预览窗口:
from selenium import webdriver driver = webdriver.Chrome() driver.get("目标页面URL") # 触发打印 driver.execute_script("window.print();") # 调用DevTools命令关闭预览 driver.execute_cdp_cmd("Page.close", {})
注:旧方案报错大多是因为Chrome版本迭代后,打印预览的DOM结构、内部API发生了变化,旧的元素定位方法已失效,上述方法更适配新版Chrome。
内容的提问来源于stack exchange,提问作者Madhukara
相关产品推荐
相关产品推荐

