使用Python3.9+Selenium截图遇SecurityError问题求助
解决Selenium截图时的"Permission denied to access property 'pageXOffset'"跨域错误
试试下面几个针对性的解决方法:
针对Firefox补充跨域相关配置
只关闭跟踪保护不够,得加上更多同源策略相关的偏好设置:from selenium import webdriver profile = webdriver.FirefoxProfile() profile.set_preference("security.fileuri.strict_origin_policy", False) profile.set_preference("dom.security.allow_unsafe_parent_loads", True) profile.set_preference("privacy.trackingprotection.enabled", False) profile.set_preference("privacy.trackingprotection.pbmode.enabled", False) driver = webdriver.Firefox(firefox_profile=profile)换Chrome浏览器并配置跨域参数
Chrome的启动参数能更直接地绕过跨域安全限制:from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument("--disable-web-security") options.add_argument("--allow-file-access-from-files") options.add_argument("--disable-site-isolation-trials") driver = webdriver.Chrome(options=options)改用Selenium原生截图方法
如果之前用的是自定义或第三方截图逻辑,换成Selenium内置的截图接口,避免触发跨域DOM访问:# 全页截图 driver.save_screenshot("full_page.png") # 截取特定元素 element = driver.find_element(By.ID, "target-element") element.screenshot("element.png")处理页面中的跨域iframe
要是错误来自页面里的跨域iframe,先屏蔽iframe加载再截图:# 清空所有iframe的内容 driver.execute_script(""" var iframes = document.getElementsByTagName('iframe'); for(var i=0; i<iframes.length; i++){ iframes[i].src = 'about:blank'; } """) # 执行截图 driver.save_screenshot("clean_page.png")
内容的提问来源于stack exchange,提问作者M. Mariscal
相关产品推荐
相关产品推荐

