我使用selenium chromedriver自动化Web应用程序。 在我的应用程序中,我需要下载xml文件。但是当我下载xml文件时,我得到了这种类型的文件可能会损害您的计算机'弹出。我想使用selenium chromedriver禁用此弹出窗口,我希望始终下载这些类型的文件。如何才能做到这一点?
答案 0 :(得分:17)
从Chrome 47.0.2526.80 m开始,我发现了XML文件的问题。 在花了6个小时试图关闭所有可能的安全选项后,我尝试了一种不同的方法。
具有讽刺意味的是,似乎转动开启 Chrome选项"Protect you and your device from dangerous sites"
会删除邮件"This type of file can harm your computer. Do you want to keep file.xml anyway?"
我正在使用'Ruby'和'Watir-Webdriver',代码如下所示:
prefs = {
'safebrowsing' => {
'enabled' => true,
}
}
b = Watir::Browser.new :chrome, :prefs => prefs
在启用safebrowsing
选项的情况下启动这样的浏览器,下载xml文件而不显示消息警告。对于任何编程语言的Selenium,原则应该是相同的。
##### 编辑:13-04-2017
在最新版Google Chrome中,上述解决方案还不够。此外,还需要使用以下开关启动浏览器:
--safebrowsing-disable-download-protection
现在,启动浏览器的代码如下所示:
b = Watir::Browser.new :chrome, :prefs => prefs, :switches => %w[--safebrowsing-disable-download-protection]))
答案 1 :(得分:4)
我发布下面的文件下载完整代码为我工作: 希望它有所帮助:-)我正在使用Java-Selenium
$scope.isValid = function (orderItem) {
var count = 0;
angular.forEach(orderItem.menu_modifier_groups, function(group) {
angular.forEach(group.menu_modifier_items, function (item) {
count += item.selected ? 1 : 0;
});
if (count != group.max_selection_points) {
return false;
} else if (count == group.max_selection_points) {
return true;
}
});
}
答案 2 :(得分:4)
以下Python代码适用于我
chromeOptions = webdriver.ChromeOptions()
prefs = {'safebrowsing.enabled': 'false'}
chromeOptions.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(chrome_options=chromeOptions)
答案 3 :(得分:1)
最近更新Chrome后,accepted answer停止了工作。现在,您需要使用--safebrowsing-disable-extension-blacklist
和--safebrowsing-disable-download-protection
命令行开关。这是适用于我的WebdriverIO配置:
var driver = require('webdriverio');
var client = driver.remote({
desiredCapabilities: {
browserName: 'chrome',
chromeOptions: {
args: [
'disable-extensions',
'safebrowsing-disable-extension-blacklist',
'safebrowsing-disable-download-protection'
],
prefs: {
'safebrowsing.enabled': true
}
}
}
});
请注意,我也禁用了扩展程序,因为它们通常会干扰自动化测试,但这并不是严格要求解决下载XML和JavaScript文件的问题。
我通过阅读this list找到了这些开关。您也可以在Chromium source。
中查看它们答案 4 :(得分:1)
我最近在使用 Katalon Studio,Chrome 版本 88 时遇到了这个问题。 值得庆幸的是,只有启用安全浏览功能才能解决问题。您可以通过“项目设置”访问设置,然后导航到“所需功能”->“Web UI”->“Chrome”。 如果您没有“首选项”设置,请添加它并将类型设置为字典。然后在值中添加一个名为“safebrowsing.enabled”的布尔值并将值设置为“true”。 结果可能如下所示: (而且你可以默认目录设置与这个例子无关)。
答案 5 :(得分:0)
唯一适合我的解决方法:
使用带有Chrome配置文件路径的参数
chromeOptions.add_argument(chrome_profile_path)
在chrome配置文件文件夹中搜索文件download_file_types.pb
。
就我而言,..chromedriver\my_profile\FileTypePolicies\36\download_file_types.pb
备份此文件,然后使用任何hexeditor打开(可以使用oline)。
搜索您要下载的文件类型,即xml
,然后将其更改为xxx
答案 6 :(得分:0)
我在C#中使用了所有建议的Chrome选项,并且仅当我的Internet连接对我有用时,但当Internet断开连接时,它们都不对我有用。 (我不确定。可能需要Chrome安全浏览器才能连接互联网)
通过使用旧版的chrome(版本71)和chromedriver(版本2.46),下载后,我看到下载的XML文件名包含“ 未确认”和“ crdownload ”延期
并无法正确解析XML文件。
最后,使用Thread.Sleep(1000)
创建wait解决了我的问题。
IWebDriver Driver;
//chromedriver.exe version2.46 path
string path = @"C:\cd71";
ChromeDriverService driverService = ChromeDriverService.CreateDefaultService(path, "chromedriver.exe");
ChromeOptions options = new ChromeOptions();
// options.AddArgument("headless");
options.AddArgument("--window-position=-32000,-32000");
options.AddUserProfilePreference("download.default_directory", @"c:\xmlFiles");
options.AddUserProfilePreference("download.prompt_for_download", false);
options.AddUserProfilePreference("disable-popup-blocking", "true");
options.AddUserProfilePreference("safebrowsing.enabled", "true");
Driver = new ChromeDriver(driverService, options);
try
{
Driver.Navigate().GoToUrl(url);
Thread.Sleep(1000);
//other works like: XML parse
}
catch
{
}
答案 7 :(得分:0)
我正在使用Google版本80.0.3987.122(正式版本)(32位)和ChromeDriver 80.0.3987.106。即使在下载.xml文件时添加以下内容,也会出现相同的错误。
$ChromeOptions = New-Object OpenQA.Selenium.Chrome.ChromeOptions
$ChromeOptions.AddArguments(@(
"--disable-extensions",
"--ignore-certificate-errors"))
$download = "C:\temp\download"
$ChromeOptions.AddUserProfilePreference("safebrowsing.enabled", "true");
$ChromeOptions.AddUserProfilePreference("download.default_directory", $download);
$ChromeOptions.AddUserProfilePreference("download.prompt_for_download", "false");
$ChromeOptions.AddUserProfilePreference("download.directory_upgrade", "true");
$ChromeDriver = New-Object OpenQA.Selenium.Chrome.ChromeDriver($chromeOptions)
答案 8 :(得分:0)
对于上下文,我有一个NWEndpoint
,其中包含var ipAddressWithPort = newConnection.endpoint.debugDescription
if let portRange = ipAddressWithPort.range(of: ":") {
ipAddressWithPort.removeSubrange(portRange.lowerBound..<ipAddressWithPort.endIndex)
}
个Flash文档及其相应的URL。由于只有在有效登录后才能访问文件,因此我无法使用基于.csv
的简单解决方案。
就像.swf
一样,下载requests
也会触发类似的提示。
没有的答案对我有用。
因此,我删除了所有额外的参数并设置了上面提出的答案,并刚刚创建了Chrome实例.xml
。
.swf