Chức năng là những lựa chọn mà bạn có thể sử dụng để tuỳ chỉnh và định cấu hình một phiên ChromeDriver. Trang này trình bày 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 đó.
Các API ngôn ngữ WebDriver cung cấp nhiều cách để truyền các chức năng đến ChromeDriver. Cơ chế chính xác còn 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:
- 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 cách sử dụng trong Java thì 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
, trong đó có các phương thức thuận tiện để thiết lập các tính năng dành riêng cho ChromeDriver. Sau đó, bạn có thể truyền 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 Selenium 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 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ơ mới tạm thời cho mỗi phiên truy cập. Đôi khi, bạn có thể muốn đặt tuỳ chọn đặc biệt hoặc chỉ sử dụng hoàn toàn một hồ sơ tuỳ chỉnh. Nếu là tài khoản cũ, bạn có thể sử dụng 'chrome.prefs' (được mô tả ở phần sau bên dưới) để chỉ định các lựa chọn ưu tiên sẽ được áp dụng sau khi Chrome khởi động. Nếu có, bạn có thể sử dụng nút chuyển dòng lệnh user-data-dir
của Chrome để cho Chrome biết nên sử dụng hồ sơ nào:
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ạ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 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í đã chỉ định. Sau đó, bạn có thể sửa đổi chế độ cài đặt hồ sơ nếu muốn và ChromeDriver có thể sử dụng hồ sơ đó 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ế độ phóng to
ChromeOptions options = new ChromeOptions();
options.addArguments("start-maximized");
Sử dụng tệp thực thi Chrome ở một 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 ChromeDriver không kiểm soát cửa sổ bật lên), 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ể dùng mã sau đây để đị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 tải xuống một số thư mục nhất định. Đặc biệt, bạn không thể sử dụng thư mục Desktop 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 một thư mục không có ý nghĩa đặc biệt đối với hệ thống.
- ChromeDriver không tự động đợi 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. 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);
Các chức năng đã ghi nhận được
Vui lòng xem tài liệu về Serenium và tiêu chuẩn W3C WebDriver để xem tiêu chuẩn mà ChromeDriver chấp nhận. Ở đây, chúng tôi chỉ liệt kê dành riêng cho Chrome các chức năng khác nhau.
ChromeOptions
đối tượng
Hầu hết các tính năng dành riêng cho Chrome đều được cung cấp thông qua ChromeOptions
. Ở một số ngôn ngữ, việc này được lớp ChromeOptions
triển khai. Trong
các ngôn ngữ khác, chúng được lưu trữ trong từ điển goog:chromeOptions
trong
khả năng mong muốn.
perfLoggingPrefs
đối tượng
Từ điển perfLoggingPrefs có định dạng sau (tất cả khoá đều không bắt buộc):
Tên | Loại | Mặc định | Mô tả |
---|---|---|---|
enableNetwork
|
boolean | đúng | Liệu có thu thập sự kiện từ Miền mạng hay không. |
enablePage
|
boolean | đúng | Liệu có thu thập sự kiện từ Miền trang hay không. |
traceCategories
|
string | (trống) | Một chuỗi danh mục theo dõi của Chrome được phân tách bằng dấu phẩy mà cần thu thập 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 1000, thì một lần mỗi giây, Công cụ cho nhà phát triển sẽ báo cáo mức độ đầy đủ của bộ đệm theo dõi. Nếu báo cáo cho biết mức sử dụng vùng đệm là 100%, thì hệ thống sẽ đưa ra cảnh báo. |
Khả năng được trả về
Đây là danh sách tất cả tính năng được trả về dành riêng cho Chrome. (ví dụ: dữ liệu ChromeDriver trả về khi bạn tạo một phiên mới)
Tên | Loại | Mô tả |
---|---|---|
chrome.chromedriverVersion
|
chuỗi | phiên bản ChromeDriver |
userDataDir
|
chuỗi | đường dẫn đến thư mục dữ liệu người dùng mà Chrome đang sử dụng; lưu ý, nút này nằm bên trong 'chrome' từ điển |