Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用SeleniumWebDriver.NET绑定设置Chrome首选项?_C#_Google Chrome_Selenium_Webdriver_Selenium Webdriver - Fatal编程技术网

C# 如何使用SeleniumWebDriver.NET绑定设置Chrome首选项?

C# 如何使用SeleniumWebDriver.NET绑定设置Chrome首选项?,c#,google-chrome,selenium,webdriver,selenium-webdriver,C#,Google Chrome,Selenium,Webdriver,Selenium Webdriver,这是我正在使用的,用户代理可以成功设置,而下载首选项不能 Windows 7、Chrome 26、Selenium-dotnet-2.31.2、chromedriver_win_26.0.1383.0 ChromeOptions ChromeOptions=新的ChromeOptions(); var prefs=新字典{ {“download.default_目录”@“C:\code”}, {“download.prompt_for_download”,false} }; chromeOpti

这是我正在使用的,用户代理可以成功设置,而下载首选项不能

Windows 7、Chrome 26、Selenium-dotnet-2.31.2、chromedriver_win_26.0.1383.0

ChromeOptions ChromeOptions=新的ChromeOptions();
var prefs=新字典{
{“download.default_目录”@“C:\code”},
{“download.prompt_for_download”,false}
};
chromeOptions.AddAddAdditionalCapability(“chrome.prefs”,prefs);
AddArgument(“--user agent=“+”some safari agent”);
var驱动器=新的色度驱动器(色度选项);
取自chromedriver.log:

[1.201][FINE]:      Initializing session with capabilities {

   "browserName": "chrome",

   "chrome.prefs": {

      "download.default_directory": "C:\\code",

      "download.prompt_for_download": false

   },

   "chrome.switches": [ "--user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version..." ],

   "chromeOptions": {

      "args": [ "--user-agent=Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version..." ],

      "binary": "",

      "extensions": [  ]

   },

   "javascriptEnabled": true,

   "platform": "WINDOWS",

   "version": ""

}
检查位于
*temp\Google\Chrome\User Data\Default\Preferences
的临时首选项文件,没有设置
“默认目录”
“提示下载”

   "download": {
      "directory_upgrade": true
   },

Selenium dotNet驱动程序不支持开箱即用设置
chrome.prefs
。问题是
chrome.prefs
必须在
chromeOptions
节点下定义为
prefs
ChromeOptions
类不包含此变量,因此您需要创建自己的
ChromeOptions
类:

public class ChromeOptionsWithPrefs: ChromeOptions
{
    public Dictionary<string,object> prefs { get; set; }
}

public static void Initialize()
{
    var options = new ChromeOptionsWithPrefs();
    options.prefs = new Dictionary<string, object>
    {
        { "intl.accept_languages", "nl" }
    };
    _driver = new ChromeDriver(@"C:\path\chromedriver", options);
}
公共类ChromeOptionsWithPrefs:ChromeOptions
{
公共字典prefs{get;set;}
}
公共静态void Initialize()
{
var options=new ChromeOptionsWithPrefs();
options.prefs=新字典
{
{“intl.accept_语言”,“nl”}
};
_驱动程序=新的ChromeDriver(@“C:\path\ChromeDriver”,选项);
}

如果您已更新到Chrome版本36.0.x和Selenium 2.42,Martins解决方案将不再有效

它似乎已经被更新了。现在可以使用以下代码

ChromeOptions options = new ChromeOptions();
options.AddUserProfilePreference(string preferenceName, object preferenceValue); 
我当前使用它将打印机设置更改为“另存为PDF”,而不是使用此代码作为示例的默认设置

ChromeOptions options = new ChromeOptions();
options.AddUserProfilePreference("printing.print_preview_sticky_settings.appState", "{\"version\":2,\"isGcpPromoDismissed\":false,\"selectedDestinationId\":\"Save as PDF\");

我认为马丁的解决方案很好,也很准确,但它突然对我不起作用了,所以我自然得看看是否能找到解决方案。

很有魅力。非常感谢。你怎么知道的?有参考资料吗?我从中学到prefs应该是chromeOptions的一部分。然后,我用JetBrains dotPeek对Selenium.NET驱动程序进行了反向工程,以查看它如何将选项传递给chromedriver.exe。显然,ChromeOptions实际上是chromedriver所期望的ChromeOptions对象的包装器。NET库将ChromeOptions序列化为JSON并将其传递给chromedriver。通过继承ChromeOptions并添加您自己的属性,您可以添加更多选项:-)好极了,Martin!这真是太棒了!尽管.NET样式和一致性规则要求属性大写,但读者的一个小免责声明是不要将
prefs
属性大写。否则,Chrome驱动程序将无法正确解析它,并将在调用时通过错误。对于无法实现此功能的用户,请参阅下面Ben的解决方案。如果此答案不再有效,是否应该删除或标记?这就像最新Chrome的魅力一样。你让我开心……)