如何使用Selenium与PowerShell禁用Chrome中所有网站的定位功能?
解决Selenium + PowerShell禁用Chrome定位及capability冲突问题
错误原因
你遇到的AddAdditionalCapability报错,是因为ChromeOptions对象本身就对应goog:chromeOptions capability,手动调用AddAdditionalCapability添加这个capability会导致重复配置,触发错误。
修正后的代码
删除冲突的AddAdditionalCapability相关代码,保留正确的定位禁用配置即可:
$Chrome = New-Object -TypeName "OpenQA.Selenium.Chrome.ChromeOptions" # 禁用定位的命令行参数 $Chrome.AddArguments('--disable-geolocation') # 其他你需要的参数 $Chrome.AddArguments('disable-blink-features=AutomationControlled') $Chrome.AddArguments('mute-audio') $Chrome.AddArguments('--disable-features=UseMediaEngagementBypass') $Chrome.AddArguments('start-maximized') # 禁用WebRTC相关的定位泄露 $Chrome.AddUserProfilePreference("webrtc.ip_handling_policy", "disable_non_proxied_udp") $Chrome.AddUserProfilePreference("webrtc.multiple_routes_enabled", $false) $Chrome.AddUserProfilePreference("webrtc.nonproxied_udp_enabled", $false) # 通过用户偏好直接设置定位权限为拒绝(2=拒绝,1=允许,0=默认) $Chrome.AddUserProfilePreference("profile.default_content_settings.geolocation", 2) $Chrome.BinaryLocation = $customChromePath # 修正ChromeDriver实例化的错误写法 $Driver = New-Object -TypeName "OpenQA.Selenium.Chrome.ChromeDriver" -ArgumentList $Chrome
关键说明
--disable-geolocation:通过命令行参数直接禁用Chrome的定位功能profile.default_content_settings.geolocation=2:通过用户配置文件强制设置定位权限为拒绝,确保网站请求定位时直接被拦截- 原代码中
New-Object -TypeName "OpenQA.Selenium.Chrome.ChromeDriver($Chrome)"是错误写法,需去掉TypeName里的括号,直接传入$Chrome作为参数
内容的提问来源于stack exchange,提问作者Coder
相关产品推荐
相关产品推荐

