Các chức năng và tuỳ chọn Chrome

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:

  1. Dùng lớp ChromeOptions. Tính năng này được Java, Python, v.v. hỗ trợ.
  2. 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ề Seleniumtiê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.

Tên Loại Mặc định  Nội dung mô tả 
args  danh sách chuỗi   Danh sách các đối số dòng lệnh cần sử dụng khi khởi động Chrome. Các đối số có giá trị liên kết phải được phân tách bằng dấu "=' (ví dụ: ['start-maximumd', 'user-data-dir=/tmp/temp_profile']). Xem tại đây để biết danh sách các đối số Chrome.
binary string   Đường dẫn tới Chrome thực thi để sử dụng (trên Mac OS X, đường dẫn này phải là tệp nhị phân thực tế, không chỉ là ứng dụng, chẳng hạn như '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome')
extensions danh sách chuỗi   Danh sách các tiện ích của Chrome để cài đặt khi khởi động. Mỗi mục trong danh sách phải là một tiện ích Chrome được mã hoá dưới dạng base-64 (.crx)
localState từ điển   Từ điển với mỗi mục nhập bao gồm tên của lựa chọn ưu tiên và giá trị của lựa chọn đó. Các lựa chọn ưu tiên này được áp dụng cho tệp Trạng thái cục bộ trong thư mục dữ liệu người dùng.
prefs từ điển   Từ điển với mỗi mục nhập bao gồm tên của lựa chọn ưu tiên và giá trị của lựa chọn đó. Các lựa chọn ưu tiên này chỉ được áp dụng cho hồ sơ người dùng đang sử dụng. Hãy xem tệp "Lựa chọn ưu tiên" trong thư mục dữ liệu người dùng của Chrome để biết ví dụ.
detach boolean false Nếu bạn đặt chính sách này thành false, thì Chrome sẽ thoát khi ChromeDriver bị tắt, bất kể phiên có thoát hay không. Nếu đúng, Chrome sẽ chỉ thoát nếu phiên thoát (hoặc đóng). Lưu ý: nếu đúng và phiên này không thoát, thì ChromeDriver không thể xoá thư mục dữ liệu người dùng tạm thời mà phiên bản Chrome đang chạy đang sử dụng.
debuggerAddress string
Địa chỉ của máy chủ trình gỡ lỗi Chrome để kết nối, dưới dạng <tên máy chủ/ip:cổng>. Ví dụ: "127.0.0.1:38947"
excludeSwitches danh sách chuỗi   Danh sách các nút chuyển dòng lệnh của Chrome để loại trừ Trình điều khiển Chrome đó theo mặc định sẽ chuyển khi khởi động Chrome. Đừng đặt tiền tố chuyển đổi bằng --.
minidumpPath  string   Thư mục để lưu trữ các công cụ thu nhỏ của Chrome . (Chỉ được hỗ trợ trên Linux.)
mobileEmulation từ điển   Từ điển có giá trị cho “deviceName” hoặc các giá trị cho “deviceMetrics” và “userAgent”. Hãy tham khảo phần Mô phỏng thiết bị di động để biết thêm thông tin.
perfLoggingPrefs từ điển   Từ điển không bắt buộc chỉ định các tuỳ chọn ghi nhật ký hiệu suất. Hãy xem mục bên dưới để biết thêm thông tin.
windowTypes danh sách chuỗi   Danh sách các loại cửa sổ sẽ xuất hiện trong danh sách ô điều khiển cửa sổ. Để truy cập vào các phần tử <webview>, hãy bao gồm "webview" trong danh sách này.

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"