Watir版本升级后Chrome默认下载目录配置失效问题求助
解决Watir 6.19中Chrome默认下载目录配置失效的问题
这种情况我升级Watir版本时也碰到过,核心原因是Watir 6.x后期版本对ChromeOptions的解析逻辑和旧版本不同,直接传prefs哈希的方式已经不再被正确识别。试试下面几个针对性方案:
方案1:改用Selenium ChromeOptions的add_preference方法
Watir底层依赖Selenium,新版更推荐直接用Selenium的ChromeOptions实例来配置浏览器偏好,替代原来的哈希传参方式。修改代码如下:
def setup # 创建ChromeOptions实例 options = Selenium::WebDriver::Chrome::Options.new # 添加下载相关偏好配置 options.add_preference(:download, { prompt_for_download: false, default_directory: @download_dir }) # 初始化Watir浏览器 Watir::Browser.new :chrome, options: options end
方案2:添加兼容性偏好配置
新版Chrome对下载目录的安全限制更严格,你可以额外添加两个配置项,大概率能解决目录不生效的问题:
def setup options = Selenium::WebDriver::Chrome::Options.new options.add_preference(:download, { prompt_for_download: false, default_directory: @download_dir, directory_upgrade: true # 允许覆盖已存在的默认目录设置 }) options.add_preference(:safebrowsing, enabled: false) # 关闭安全浏览检查,避免阻止自定义下载目录 Watir::Browser.new :chrome, options: options end
方案3:确保下载目录是绝对路径
一定要确认@download_dir是绝对路径,相对路径在新版ChromeDriver中可能无法被正确解析。可以用Ruby的File.expand_path生成可靠的绝对路径:
# 示例:基于当前脚本目录生成downloads文件夹的绝对路径 @download_dir = File.expand_path('./downloads', __dir__)
方案4:验证ChromeDriver与Chrome版本兼容性
Watir 6.19对应的Selenium版本为3.x,需要确保你的ChromeDriver版本和本地安装的Chrome浏览器版本完全兼容。版本不匹配不仅会导致下载配置失效,还可能引发其他隐性问题。
按照上面的步骤逐一排查,应该能解决你的问题!
内容的提问来源于stack exchange,提问作者Andrew Heckman
相关产品推荐
相关产品推荐

