Dưới đây là những gì tôi đang sử dụng, tác nhân người dùng có thể được đặt thành công, trong khi tùy chọn tải xuống không thể.Làm cách nào để đặt tùy chọn Chrome bằng cách sử dụng liên kết Trình theo dõi web của Selenium.
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);
Taken từ 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": ""
}
Kiểm tra tạm nộp Preferences tại *temp\Google\Chrome\User Data\Default\Preferences
, không có "default_directory"
và "prompt_for_download"
được đặt.
"download": {
"directory_upgrade": true
},
Hoạt động như một sự quyến rũ. Cảm ơn bạn. Làm thế nào bạn biết điều này? Bất kỳ tài liệu tham khảo? –
Tôi đã học được từ https://code.google.com/p/chromedriver/wiki/CapabilitiesAndSwitches#List_of_recognized_capabilities rằng các phần mở rộng phải là một phần của chromeOptions. Sau đó, tôi đảo ngược thiết kế trình điều khiển Selenium .NET với JetBrains dotPeek để xem cách nó chuyển các tùy chọn tới chromedriver.exe. Dường như ChromeOptions là một trình bao bọc khá hợp lý xung quanh chromeOptions-object chromedriver mong đợi. Thư viện .NET tuần tự hóa các ChromeOptions thành JSON và chuyển nó tới chromedriver. Bằng cách kế thừa từ ChromeOptions và thêm thuộc tính của riêng bạn, bạn có thể thêm các tùy chọn khác :-) –
Bravo, Martin! Điều này làm việc tuyệt vời! Tuyên bố từ chối trách nhiệm nhỏ cho người đọc, mặc dù quy tắc tạo kiểu và thống nhất .NET yêu cầu Thuộc tính được viết hoa, không tận dụng thuộc tính 'prefs'. Nếu không, Trình điều khiển Chrome sẽ không thể phân tích cú pháp chính xác và sẽ thông qua lỗi khi được gọi. –