これは私が使用しているものです。ユーザーエージェントは正常に設定できますが、ダウンロードの設定はできません。
Windows 7、Chrome 26、Selenium-dotnet-2.31.2、chromedriver_win_26.0.1383.0
ChromeOptions chromeOptions = new ChromeOptions();
var prefs = new Dictionary<string, object> {
{ "download.default_directory", @"C:\code" },
{ "download.Prompt_for_download", false }
};
chromeOptions.AddAdditionalCapability("chrome.prefs", prefs);
chromeOptions.AddArgument("--user-agent=" + "some safari agent");
var driver = new ChromeDriver(chromeOptions);
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
で一時設定ファイルを確認してください。"default_directory"
と"Prompt_for_download"
が設定されていません。
"download": {
"directory_upgrade": true
},
Selenium dotNetドライバーは、chrome.prefs
をそのまま使用する設定をサポートしていません。問題は、prefs
ノードの下でchrome.prefs
をchromeOptions
として定義する必要があることです。 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);
}
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\");
マーティンの解決策は非常によく正確であると思いましたが、突然機能しなくなったので、当然、解決策を見つけることができるかどうかを確認する必要がありました。