如何获取Selenium中SafariOptions等全部可用配置的完整列表?
Safari + Selenium 配置指南:Capabilities、偏好设置及常见需求实现
一、已掌握的基础配置
你目前实现的Safari相关Selenium配置可整理为:
SafariOptions 配置
options = webdriver.SafariOptions() options.automatic_inspection = True # 激活Web检查器
SafariService 配置
service = webdriver.SafariService(service_args=["--diagnose"]) # 启用日志诊断
初始化Driver并获取Capabilities
driver = webdriver.Safari(service=service, options=options) # 获取已支持的Capabilities browser_name = driver.capabilities['browserName'] browser_version = driver.capabilities['browserVersion']
二、核心需求实现:自定义下载路径+关闭自动打开安全下载
Safari的下载相关设置无法直接通过SafariOptions的set_preference或add_argument实现,需通过修改Safari的用户偏好配置文件完成,具体操作如下:
1. 修改全局Safari偏好(适用于测试环境)
启动Selenium前,通过Python修改macOS下的Safari配置文件(路径为~/Library/Preferences/com.apple.Safari.plist):
import plistlib import os # 定义Safari偏好文件路径 safari_plist_path = os.path.expanduser("~/Library/Preferences/com.apple.Safari.plist") # 读取现有配置 with open(safari_plist_path, 'rb') as f: plist_data = plistlib.load(f) # 设置自定义下载路径 plist_data['DownloadDirectory'] = "/Users/your-username/Downloads/SeleniumTests" # 关闭自动打开安全下载文件 plist_data['AutoOpenSafeDownloads'] = False # 写入修改后的配置 with open(safari_plist_path, 'wb') as f: plistlib.dump(plist_data, f)
注意:修改后需确保Safari完全退出,再启动Selenium的SafariDriver,否则配置不会生效。
2. 临时用户配置(可选,避免影响全局设置)
若不想修改全局Safari配置,可创建临时用户目录,指定驱动使用该目录的偏好:
service = webdriver.SafariService(service_args=["--data-path", "/path/to/temporary-profile-directory"])
随后在临时目录下创建com.apple.Safari.plist文件,写入上述下载相关配置即可。
三、Safari在Selenium中可用的配置完整列表
1. Capabilities 可选项
除你已掌握的browserName、browserVersion,还支持:
platformName:浏览器运行的操作系统平台safari:automaticInspection:对应SafariOptions.automatic_inspection配置safari:automaticProfiling:是否自动启动性能分析器safari:useSimulator:是否使用iOS模拟器中的Safari(仅macOS支持)
2. Preferences 可选项
Safari的偏好本质是其plist配置项,所有可配置项对应Safari自身的设置,可通过以下方式获取完整列表:
- 修改Safari偏好设置面板的任意选项后,查看
~/Library/Preferences/com.apple.Safari.plist文件的变化,对应获取配置键名 - 在终端执行
defaults read com.apple.Safari命令,导出当前所有生效的Safari偏好配置
3. SafariService 支持的参数
除--diagnose外,还支持:
--data-path:指定驱动使用的临时数据目录--port:指定驱动监听的端口号--log-path:指定日志文件输出路径
内容的提问来源于stack exchange,提问作者leanne
相关产品推荐
相关产品推荐

