Yi *_*eng 17 c# selenium google-chrome webdriver selenium-webdriver
这是我正在使用的,用户代理可以成功设置,而下载首选项不能.
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);
Run Code Online (Sandbox Code Playgroud)
取自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": ""
}
Run Code Online (Sandbox Code Playgroud)
检查临时首选项文件*temp\Google\Chrome\User Data\Default\Preferences,否"default_directory","prompt_for_download"并设置.
"download": {
"directory_upgrade": true
},
Run Code Online (Sandbox Code Playgroud)
小智 28
如果您已更新到Chrome版本36.0.x和Selenium 2.42,则Martins解决方案不再有效.
它似乎已经更新.您现在可以使用以下代码
ChromeOptions options = new ChromeOptions();
options.AddUserProfilePreference(string preferenceName, object preferenceValue);
Run Code Online (Sandbox Code Playgroud)
我目前使用它将我的打印机设置更改为"另存为PDF",而不是默认使用此代码作为示例
ChromeOptions options = new ChromeOptions();
options.AddUserProfilePreference("printing.print_preview_sticky_settings.appState", "{\"version\":2,\"isGcpPromoDismissed\":false,\"selectedDestinationId\":\"Save as PDF\");
Run Code Online (Sandbox Code Playgroud)
我认为马丁的解决方案是非常不错的,准确的,但它突然停止为我工作,所以我自然要看看如果我能找到一个解决方案.
Mar*_*ers 20
Selenium dotNet驱动程序不支持设置chrome.prefs开箱即用.问题是chrome.prefs必须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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27254 次 |
| 最近记录: |