如何避免使用selenium在Chrome自动化中弹出“此类型的文件可能会损害您的计算机”

时间:2016-06-04 05:10:26

标签: c# google-chrome selenium selenium-chromedriver webautomation

我正在使用selenium来自动填充chrome中的网站。当我下载exe或XML文件时,我得到一个弹出窗口“这种类型的文件可能会损害您的计算机”保留和丢弃选项。如何以编程方式禁用此功能? 我在c#中实现这个, 我试过了,

chromeOptions.AddUserProfilePreference("disable-popup-blocking", "true") 

但这不适合我。 如何禁用此弹出窗口? 如果不可能如何接受警告? 请帮帮我。

2 个答案:

答案 0 :(得分:4)

要停用该消息,您需要将首选项safebrowsing.enabled设置为true。以下是CSharp的一个工作示例:

var options = new ChromeOptions();
options.AddUserProfilePreference("download.default_directory", "C:\\Downloads");
options.AddUserProfilePreference("download.prompt_for_download", false);
options.AddUserProfilePreference("download.directory_upgrade", true);
options.AddUserProfilePreference("safebrowsing.enabled", true);

var driver = new ChromeDriver(options);
driver.Navigate().GoToUrl("http://www.7-zip.org/a/7z1602.exe");

有关偏好的描述:

https://chromium.googlesource.com/chromium/src/+/master/chrome/common/pref_names.cc

答案 1 :(得分:1)

可能你需要的是改变

chromeOptions.AddUserProfilePreference("disable-popup-blocking", "true")     // disables blocking the popup

chromeOptions.AddUserProfilePreference("disable-popup-blocking", "false")   // enables blocking the popup

反而避免弹出窗口。

编辑 :如果您遇到有害文件内容,可以尝试使用以下方法设置实验性Chrome选项 / p>

Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("safebrowsing.enabled", "true");
chromeOptions.setExperimentalOption("prefs", prefs);

引用文档here中的示例:

  

设置Chrome偏好设置

ChromeOptions options = new ChromeOptions(); 
Map<String, Object> prefs = new HashMap<String, Object>(); 
prefs.put("profile.default_content_settings.popups", 0);
options.setExperimentalOption("prefs", prefs);

日期 - 2016年6月4日[C#]

通过一些链接可以解决这个问题,.Net仍然没有setExperimentalOption首选项以及ChromeOptions。因此,使用列出Add Argument to the ChromeOptions using C#标记的here的方法之一是:

chromeOptions.AddArgument("--safebrowsing-disable-download-protection");
  

禁用检查下载网址和下载的安全浏览功能   内容的哈希,以确保内容不是恶意的。

日期 - 2016年6月4日[JAVA]

文档here将其引用为:

  

public void setExperimentalOption(java.lang.String name,                                     java.lang.Object value)

     

设置实验选项。对于新的ChromeDriver选项尚不适用   通过ChromeOptions API公开