Chức năng là các tuỳ chọn mà bạn có thể sử 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 chức năng được ChromeDriver hỗ trợ và cách sử dụng các chức năng đó.
API ngôn ngữ WebDriver cung cấp các cách để truyền chức năng đến ChromeDriver. Cơ chế chính xác sẽ khác nhau tuỳ theo ngôn ngữ, nhưng hầu hết các ngôn ngữ đều sử dụng một hoặc cả hai cơ chế sau:
- Sử dụng lớp
ChromeOptions
. Java, Python, v.v. hỗ trợ tính năng này. - Sử dụng lớp
DesiredCapabilities
. Python, Ruby, v.v. hỗ trợ tính năng này. Mặc dù cũng có trong Java, nhưng việc sử dụng tính năng này trong Java không còn đượ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
. Thực thể này có các phương thức thuận tiện để thiết lập các chức 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ừ Selenium phiên bản 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 WebDriver khác 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ị mà chức năng đó nhận. Xem danh sách đầy đủ.
Python
caps = webdriver.DesiredCapabilities.CHROME.copy()
caps['acceptInsecureCerts'] = True
driver = webdriver.Chrome(desired_capabilities=caps)
Ruby
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
Theo mặc định, ChromeDriver sẽ tạo một hồ sơ tạm thời mới cho mỗi phiên. Bạn có thể đặt các tuỳ chọn ưu tiên đặc biệt hoặc chỉ sử dụng một hồ sơ tuỳ chỉnh, còn gọi là thư mục dữ liệu người dùng.
Nếu sử dụng hồ sơ tạm thời, bạn có thể sử dụng chức năng chrome.prefs
để chỉ định các tuỳ chọn ưu tiên sẽ áp dụng sau khi Chrome khởi động. Đối với hồ sơ tuỳ chỉnh, bạn có thể sử dụng nút chuyển dòng lệnh Chrome user-data-dir
để cho Chrome biết hồ sơ nào sẽ sử dụng:
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir=/path/to/your/custom/profile");
Tạo hồ sơ tuỳ chỉnh của riêng bạn bằng cách chạy Chrome trên dòng lệnh hoặc ChromeDriver, sử dụng 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 ở vị trí được chỉ định. Sau đó, bạn có thể sửa đổi chế độ cài đặt hồ sơ và ChromeDriver có thể sử dụng hồ sơ này trong tương lai. Mở chrome://version
trong trình duyệt để xem Chrome đang sử dụng hồ sơ nào.
Khởi động Chrome ở chế độ mở rộng tối đa
Khởi động Chrome ở chế độ mở rộng bằng cách sử dụng nút chuyển start-maximized
:
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 và khôi phục hành vi bình thường của Chrome khi Chrome không được 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 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 nhất định để tải xuống. Cụ thể, bạn không thể sử dụng thư mục trên máy tính làm thư mục tải xuống. Trên Linux, bạn không thể sử dụng thư mục gốc để tải xuống. Danh sách chính xác các thư mục bị cấm có thể thay đổi, vì vậy, bạn nên sử dụng một thư mục duy nhất 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
driver.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. - Để có kết quả tốt nhất, hãy sử dụng đường dẫn đầy đủ vì đường dẫn tương đối không phải lúc nào cũng hoạt động.
- Trên Windows, việc sử dụng
\` as path separators.
/` không đáng tin cậy.
ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("download.default_directory", "/directory/path");
options.setExperimentalOption("prefs", prefs);
Các chức năng được nhận dạng
Đọc tài liệu về Selenium và tiêu chuẩn WebDriver của W3C để biết các chức năng tiêu chuẩn mà ChromeDriver chấp nhận. Tại đây, chúng tôi liệt kê các tính năng dành riêng cho Chrome.
Đối tượng ChromeOptions
Hầu hết các chức năng dành riêng cho Chrome đều được hiển thị thông qua đối tượng ChromeOptions
. Trong một số ngôn ngữ, các lớp này được triển khai bằng lớp ChromeOptions
. Trong các ngôn ngữ khác, các từ khoá này được lưu trữ trong từ điển goog:chromeOptions
trong các chức năng đã chọn.
Đối tượng perfLoggingPrefs
Từ điển perfLoggingPrefs
có định dạng như sau. Tất cả các khoá đều không bắt buộc:
Các tính năng được trả về
Dưới đây là danh sách tất cả các chức năng được trả về dành riêng cho Chrome, nói cách khác, những gì ChromeDriver trả về khi bạn tạo một phiên mới.