Chức năng là những lựa chọn mà bạn có thể dùng để tuỳ chỉnh và định cấu hình phiên ChromeDriver. Trang này ghi lại tất cả các tính năng được ChromeDriver hỗ trợ và cách sử dụng các tính năng đó.
API ngôn ngữ WebDriver cung cấp các cách để chuyển các chức năng sang ChromeDriver. Cơ chế chính xác còn tuỳ theo ngôn ngữ, nhưng hầu hết ngôn ngữ đều sử dụng một hoặc cả hai cơ chế sau:
- Dùng lớp
ChromeOptions
. Tính năng này được Java, Python, v.v. hỗ trợ. - Dùng lớp
DesiredCapabilities
. Tính năng này được Python, Ruby, v.v. hỗ trợ. Mặc dù ngôn ngữ này cũng có trong Java nhưng trong Java lại không được dùng nữa.
Sử dụng lớp ChromeOptions
Bạn có thể tạo một thực thể của ChromeOptions
có các phương thức thuận tiện để đặt các tính năng dành riêng cho ChromeDriver. Sau đó, bạn có thể truyền đối tượng ChromeOptions
vào hàm khởi tạo ChromeDriver:
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);
Kể từ phiên bản Selen 3.6.0, lớp ChromeOptions
trong Java cũng triển khai giao diện Capabilities
, cho phép bạn chỉ định các chức năng khác của WebDriver không dành riêng cho ChromeDriver.
ChromeOptions options = new ChromeOptions();
// Add the WebDriver proxy capability.
Proxy proxy = new Proxy();
proxy.setHttpProxy("myhttpproxy:3337");
options.setCapability("proxy", proxy);
// Add a ChromeDriver-specific capability.
options.addExtensions(new File("/path/to/extension.crx"));
ChromeDriver driver = new ChromeDriver(options);
Sử dụng DesiredCapabilities
Để sử dụng DesiredCapabilities
, bạn cần biết tên của chức năng và loại giá trị cần sử dụng. Xem danh sách đầy đủ tại đây.
Python
caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)
Đá hồng ngọc
caps = Selenium::WebDriver::Remote::Capabilities.chrome(
"goog:chromeOptions" => {"args" => [ "window-size=1000,800" ]})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps
Các trường hợp sử dụng phổ biến
Sử dụng hồ sơ tuỳ chỉnh (còn gọi là thư mục dữ liệu người dùng)
Theo mặc định, ChromeDriver sẽ tạo một hồ sơ tạm thời mới cho mỗi phiên. Đôi khi, bạn có thể muốn đặt các lựa chọn ưu tiên đặc biệt hoặc chỉ sử dụng một hồ sơ tuỳ chỉnh. Nếu là trước đó, bạn có thể sử dụng tính năng 'chrome.prefs' (được mô tả ở phần sau bên dưới) để chỉ định tùy chọn sẽ được áp dụng sau khi Chrome khởi động. Nếu là sau, bạn có thể sử dụng nút chuyển dòng lệnh của Chrome user-data-dir
để cho Chrome biết hồ sơ cần sử dụng:
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");
Bạn có thể tạo hồ sơ tuỳ chỉnh của riêng mình bằng cách chỉ chạy Chrome (trên dòng lệnh hoặc thông qua ChromeDriver) với nút chuyển user-data-dir
được đặt thành một số thư mục mới. Nếu đường dẫn không tồn tại, Chrome sẽ tạo một hồ sơ mới trong vị trí đã chỉ định. Sau đó, bạn có thể sửa đổi chế độ cài đặt hồ sơ theo ý muốn và sau này, ChromeDriver có thể sử dụng hồ sơ đó. Mở chrome://version trong trình duyệt để xem Chrome đang sử dụng hồ sơ nào.
Khởi động Chrome ở chế độ phóng to
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
Sử dụng tệp thực thi Chrome ở vị trí không chuẩn
ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");
Chặn cửa sổ hộp thoại
Theo mặc định, ChromeDriver định cấu hình Chrome để cho phép cửa sổ bật lên. Nếu bạn muốn chặn cửa sổ bật lên (tức là khôi phục hoạt động bình thường của Chrome khi cửa sổ này không do ChromeDriver kiểm soát), hãy làm như sau:
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",
Arrays.asList("disable-popup-blocking"));
Đặt thư mục tải xuống
Bạn có thể sử dụng mã sau để định cấu hình Chrome nhằm tải tệp xuống một thư mục cụ thể. Tuy nhiên, bạn cần lưu ý một số điều sau:
- Chrome không cho phép sử dụng một số thư mục để tải xuống. Cụ thể, bạn không thể sử dụng thư mục máy tính để bàn làm thư mục tải xuống. Trên Linux, bạn cũng không thể sử dụng thư mục gốc để tải xuống. Vì danh sách chính xác các thư mục bị cấm có thể thay đổi, bạn nên sử dụng thư mục không có ý nghĩa đặc biệt đối với hệ thống.
- ChromeDriver không tự động chờ quá trình tải xuống hoàn tất. Nếu bạn gọi drive.quit() quá sớm, Chrome có thể chấm dứt trước khi quá trình tải xuống hoàn tất.
- Đường dẫn tương đối không phải lúc nào cũng hoạt động. Để có kết quả tốt nhất, hãy sử dụng đường dẫn đầy đủ.
- Trên Windows, hãy sử dụng "" làm dấu phân cách đường dẫn. Việc sử dụng "/" không đáng tin cậy trên Windows.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);
Khả năng được công nhận
Vui lòng xem tài liệu về Selenium và tiêu chuẩn W3C WebDriver để biết các tính năng tiêu chuẩn được ChromeDriver chấp nhận. Ở đây, chúng tôi chỉ liệt kê các tính năng dành riêng cho Chrome.
ChromeOptions
đối tượng
Hầu hết các tính năng dành riêng cho Chrome đều được thể hiện thông qua đối tượng ChromeOptions
. Trong một số ngôn ngữ, việc này được triển khai bằng lớp ChromeOptions
. Trong các ngôn ngữ khác, các sự kiện này được lưu trữ trong từ điển goog:chromeOptions
ở các tính năng mong muốn.
perfLoggingPrefs
đối tượng
Từ điển perfLoggingPrefs có định dạng sau (tất cả các khoá đều không bắt buộc):
Tên | Loại | Mặc định | Nội dung mô tả |
---|---|---|---|
enableNetwork
|
boolean | đúng | Có thu thập sự kiện từ Miền mạng hay không. |
enablePage
|
boolean | đúng | Có thu thập sự kiện từ Miền trang hay không. |
traceCategories
|
string | (trống) | Một chuỗi các danh mục theo dõi của Chrome được phân tách bằng dấu phẩy mà bạn cần thu thập các sự kiện theo dõi. Chuỗi không xác định hoặc trống sẽ tắt tính năng theo dõi. |
bufferUsageReportingInterval
|
số nguyên dương | 1000 | Số mili giây được yêu cầu giữa các sự kiện sử dụng vùng đệm theo dõi Công cụ cho nhà phát triển. Ví dụ: nếu là 1000, thì mỗi giây một lần, Công cụ cho nhà phát triển sẽ báo cáo mức độ đầy đủ của vùng đệm theo dõi. Nếu báo cáo cho biết mức sử dụng vùng đệm là 100%, thì một cảnh báo sẽ được đưa ra. |
Khả năng trả về
Đây là danh sách tất cả các tính năng dành riêng cho Chrome được trả về. (tức là nội dung mà ChromeDriver trả về khi bạn tạo một phiên mới)
Tên | Loại | Nội dung mô tả |
---|---|---|
chrome.chromedriverVersion
|
string | phiên bản ChromeDriver |
userDataDir
|
string | đường dẫn đến thư mục dữ liệu người dùng mà Chrome đang sử dụng; lưu ý rằng đường dẫn này nằm trong từ điển "chrome" |