Tùy chọn Chrome & Khả năng mong muốn trong Selenium

⚡ Tóm tắt thông minh

Các tùy chọn Chrome và các tính năng mong muốn trong Selenium WebDriver kiểm soát cách trình duyệt Chrome khởi chạy và hoạt động trong các bài kiểm tra tự động. Chúng cùng nhau cấu hình các tham số, tiện ích mở rộng, xử lý SSL và cài đặt đa trình duyệt, giúp các lần chạy thử nghiệm linh hoạt, có thể lặp lại và sẵn sàng cho việc sử dụng. Selenium Thực thi trên lưới.

  • 🌐 Tùy chọn Chrome: Tùy chỉnh các phiên làm việc với các tham số như start-maximized, incognito và headless.
  • ⚙️ Khả năng mong muốn: Thiết lập tên trình duyệt, nền tảng, phiên bản và chấp nhận chứng chỉ SSL.
  • 🧩 Phần mở rộng: Tải tệp CRX thông qua hệ thống tự động thay vì cài đặt thủ công.
  • 🇧🇷 Ẩn danh và không có người đứng đầu: Mã có thể tái sử dụng chạy các phiên riêng tư hoặc ngầm định cho các quy trình CI.
  • 🖥️ Selenium Lưới: Các tính năng này cho phép thực thi kiểm thử phân tán trên nhiều trình duyệt khác nhau.
  • ⚠️ Selenium Ghi chú năm 4: DesiredCapabilities đã lỗi thời; hãy truyền trực tiếp ChromeOptions cho trình điều khiển.

Các tùy chọn Chrome và các tính năng mong muốn trong Selenium webdriver

Lớp tùy chọn Chrome là gì?

Lớp tùy chọn Chrome là một khái niệm trong Selenium WebDriver để thao tác các thuộc tính khác nhau của trình điều khiển Chrome. Lớp tùy chọn Chrome thường được sử dụng cùng với Khả năng mong muốn để tùy chỉnh các phiên trình điều khiển Chrome. Nó giúp bạn thực hiện nhiều thao tác khác nhau như mở Chrome ở chế độ tối đa, tắt các tiện ích mở rộng hiện có, tắt cửa sổ bật lên, v.v.

Ví dụ:

Ví dụ dưới đây cho thấy cách mở trình duyệt Chrome ở chế độ tối đa bằng lớp ChromeOptions. Chúng ta cần chuyển một phiên bản của lớp ChromeOptions sang quá trình khởi tạo trình điều khiển web.

ChromeOptions options = new ChromeOptions()
options.addArgument("start-maximized");
ChromeDriver driver = new ChromeDriver(options);

Dưới đây là danh sách các đối số có sẵn và được sử dụng phổ biến nhất cho lớp ChromeOptions

  • bắt đầu tối đa hóa: Mở Chrome ở chế độ phóng to
  • ẩn danh: Mở Chrome ở chế độ ẩn danh
  • không đầu: Mở Chrome ở chế độ không đầu
  • vô hiệu hóa tiện ích mở rộng: Tắt các tiện ích mở rộng hiện có trên trình duyệt Chrome
  • vô hiệu hóa chặn cửa sổ bật lên: Vô hiệu hóa pop-up hiển thị trên trình duyệt Chrome
  • tạo-mặc định-trình duyệt: Đặt Chrome làm trình duyệt mặc định
  • phiên bản: In phiên bản trình duyệt Chrome
  • vô hiệu hóa thanh thông tin: Ngăn Chrome hiển thị thông báo “Chrome đang bị phần mềm tự động điều khiển”

Lớp khả năng mong muốn

Lớp khả năng mong muốn được sử dụng để sửa đổi nhiều thuộc tính của trình điều khiển web. Nó cung cấp các cặp khóa-giá trị để thay đổi các thuộc tính riêng lẻ của trình điều khiển web như tên trình duyệt, nền tảng trình duyệt, v.v. Một phương thức phổ biến của lớp Khả năng mong muốn là phương thức setCapability. Nó chủ yếu được sử dụng với Selenium Grid, nơi cùng một trường hợp thử nghiệm cần được thực thi trên các trình duyệt khác nhau.

Ví dụ:

Ví dụ bên dưới cho thấy cách cho phép trình duyệt Chrome chấp nhận chứng chỉ SSL trên các trang web theo mặc định bằng cách sử dụng Khả năng mong muốn cho lớp Chrome.

// Create an object of desired capabilities class with Chrome driver
DesiredCapabilities SSLCertificate = DesiredCapabilities.chrome();
// Set the pre defined capability – ACCEPT_SSL_CERTS value to true
SSLCertificate.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
// Open a new instance of chrome driver with the desired capability
WebDriver driver = new ChromeDriver(SSLCertificate);

Dưới đây là các loại khả năng được xác định trước được sử dụng phổ biến nhất.

Tên khả năng Mô tả Chi tiết
ACCEPT_SSL_CERTS Thuộc tính này yêu cầu trình duyệt chấp nhận Chứng chỉ SSL theo mặc định
TÊN GA TÀU Thuộc tính này được sử dụng để thiết lập nền tảng hệ điều hành được sử dụng để truy cập trang web
BROWSER_NAME Thuộc tính này được sử dụng để đặt tên trình duyệt cho phiên bản trình điều khiển web
PHIÊN BẢN Thuộc tính này được sử dụng để đặt phiên bản trình duyệt

Tùy chọn Chrome cho tiện ích mở rộng Trình chặn quảng cáo

Tiện ích mở rộng Adblocker của trình duyệt Chrome có thể được xử lý bằng cách sử dụng ChromeDriver Options và Desired Capabilities class. Dưới đây là các bước để truy cập AdBlocker tiện ích mở rộng trên trình duyệt Chrome sử dụng lớp Khả năng mong muốn.

Bước 1) AdBlocktiện ích mở rộng er phải được cài đặt trên trình duyệt Chrome trước khi sử dụng lớp Tùy chọn Chrome

Bước 2) ExtracTệp CRX tương ứng với AdBlocktiện ích mở rộng er thông qua http://crxextractor.com/

Bước 3) Truyền đường dẫn Tệp CRX đã tải xuống vào lớp Tùy chọn Chrome

Bước 4) Khởi tạo trình điều khiển web bằng cách sử dụng lớp khả năng mong muốn và Tùy chọn Chrome trong Selenium vật

Ví dụ:

Ví dụ bên dưới minh họa cách kích hoạt tiện ích mở rộng trình chặn quảng cáo trên trình duyệt Chrome bằng cách sử dụng lớp Tùy chọn Chrome và Khả năng mong muốn.

ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("Path to CRX File"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);

ExtracTệp CRX

Các bước dưới đây minh họa quy trình của ví dụtracTải xuống tập tin CRX thông qua trình chặn quảng cáo trên trang web – http://crxextractor.com/

Bước 1) Đến phần http://crxextractor.com/ và nhấp vào nút bắt đầu

ExtracTệp CRX

Bước 2) Cài đặt tiện ích mở rộng Chrome – Ad Blocker URL bên dưới hộp văn bản. URL Bạn có thể tìm thấy Adblock trên Chrome Web Store tại đây. https://chrome.google.com/webstore/detail/adblock-%E2%80%94-best-ad-blocker/gighmmpiobklfepjocnamgkkbiglidom

và bấm vào đồng ý

ExtracTệp CRX

Bước 3) Khi nhấp vào nút OK, nhãn của nút sẽ đổi thành Get .CRX như bên dưới. Bấm vào nút Get .CRX, file CRX tương ứng với đuôi mở rộng sẽ được tải xuống

ExtracTệp CRX

Bước 4) Lưu tệp vào máy cục bộ, ghi chú đường dẫn đã lưu. Bước tiếp theo là chuyển đường dẫn đã lưu vào lớp Tùy chọn Chrome

Mâu Code:

  1. Bạn sẽ thấy quảng cáo tại https://demo.guru99.com/ như sau

ExtracTệp CRX

  1. Với AdBlocker tiện ích mở rộng được bật trên quảng cáo trình duyệt Chrome sẽ bị tắt
package adblock;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;


public class AdblockDemo {
public static void main(String[] args)  {
	
	System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");		
	ChromeOptions options = new ChromeOptions();
	options.addExtensions(new File("X://extension_3_40_1_0.crx")); 
	DesiredCapabilities capabilities = new DesiredCapabilities();
	capabilities.setCapability(ChromeOptions.CAPABILITY, options);
	options.merge(capabilities);
	ChromeDriver driver = new ChromeDriver(options);
	driver.get("https://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();
	//driver.quit();
	}
	
}

Code Giải thích:

  1. Ban đầu, bạn cần đặt đường dẫn đến tệp chromedriver.exe bằng phương thức thuộc tính set vì bạn đang sử dụng Trình duyệt Chrome để kiểm tra
  2. Bạn cần đặt đường dẫn đến Tệp CRX để thêm phương thức tiện ích mở rộng
  3. Sau đó, bạn cần tạo một đối tượng Khả năng mong muốn của Chrome trong Selenium class và chuyển nó tới phiên bản trình điều khiển web. Từ Selenium Phiên bản 3.8.1, lớp khả năng của trình điều khiển không được dùng nữa và bạn cần hợp nhất đối tượng khả năng với đối tượng Tùy chọn Chrome trước khi chuyển đối tượng tương tự làm đối số cho hàm tạo Trình điều khiển Chrome
  4. Mở URL – https://demo.guru99.com/test/simple_context_menu.html đã bật tiện ích Trình chặn quảng cáo
  5. Phóng to và đóng trình duyệt

LƯU Ý: Chúng tôi đang kích hoạt AdBlocker tiện ích mở rộng trên trình duyệt Chrome thông qua tập lệnh tự động hóa thay vì bật thủ công tiện ích Adblocker trên trình duyệt Chrome. Tệp CRX là một cách để truy cập tiện ích mở rộng trình chặn quảng cáo bằng tập lệnh tự động hóa

Đầu ra:

Trình duyệt Chrome sẽ được kích hoạt với AdBlocktiện ích mở rộng er được bật như bên dưới mà không có bất kỳ quảng cáo nào

ExtracTệp CRX

Ngoài việc tải các tiện ích mở rộng, ChromeOptions còn kiểm soát cách thức hoạt động của cửa sổ trình duyệt.

Tùy chọn Chrome cho chế độ Ẩn danh

Tùy chọn Chrome có thể được sử dụng cho chế độ ẩn danh bằng cách sử dụng đối số được xác định trước –ẩn danh.

Dưới đây là mã mẫu để thực hiện tương tự.

Mâu Code:

package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;

public class Incognito{
public static void main(String[] args) {
	// TODO Auto-generated method stub
	System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
	ChromeOptions options = new ChromeOptions();
	options.addArguments("--incognito");
	DesiredCapabilities capabilities = new DesiredCapabilities();
	capabilities.setCapability(ChromeOptions.CAPABILITY, options);
	options.merge(capabilities);
	ChromeDriver driver = new ChromeDriver(options);		
	driver.get("https://demo.guru99.com/test/simple_context_menu.html");
	driver.manage().window().maximize();		
	//driver.quit();
	}
	}

Code Giải thích:

  1. Ban đầu, bạn cần đặt đường dẫn đến tệp chromedriver.exe bằng phương thức thuộc tính set vì bạn đang sử dụng Trình duyệt Chrome để kiểm tra
  2. Sau đó, bạn cần tạo một đối tượng của lớp Tùy chọn Chrome và chuyển nó sang phiên bản trình điều khiển web. Vì chúng ta muốn mở trình duyệt Chrome ở chế độ ẩn danh nên bạn cần chuyển đối số –incognito cho lớp Tùy chọn Chrome.
  3. Tiếp theo, tạo một đối tượng của lớp Khả năng mong muốn và hợp nhất đối tượng lớp Khả năng mong muốn với đối tượng lớp Tùy chọn Chrome bằng phương thức hợp nhất
  4. Bạn cần tạo một đối tượng của lớp Trình điều khiển Chrome và truyền đối tượng Tùy chọn Chrome làm đối số
  5. Cuối cùng, chúng ta cần phải vượt qua URL – https://demo.guru99.com/test/simple_context_menu.html đến phương thức driver.get
  6. Phóng to và đóng trình duyệt

Đầu ra:

Cửa sổ trình duyệt chrome sẽ được mở ở chế độ Ẩn danh như bên dưới

Tùy chọn Chrome cho Chế độ ẩn danh

Tùy chọn Chrome cho Chrome không đầu

Trình duyệt không đầu chạy ở chế độ nền. Bạn sẽ không thấy GUI của trình duyệt hoặc các thao tác được thực hiện trên đó.

Tùy chọn Chrome để chạy trình duyệt Chrome ở chế độ không đầu có thể được thực hiện bằng cách sử dụng các đối số được xác định trước -không đầu.

Mã mẫu để thực hiện nó được đề cập dưới đây.

Ví dụ:

package test;
import java.io.File;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.remote.DesiredCapabilities;


public class HeadlessModeDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.setProperty("webdriver.chrome.driver","X://chromedriver.exe");
		ChromeOptions options = new ChromeOptions();
		options.addArguments("--headless");
		DesiredCapabilities capabilities = new DesiredCapabilities();
		capabilities.setCapability(ChromeOptions.CAPABILITY, options);
		options.merge(capabilities);
		ChromeDriver driver = new ChromeDriver(options);		
		driver.get("https://demo.guru99.com/");
		driver.manage().window().maximize();
		String title = driver.getTitle();
		System.out.println("Page Title: " +title);
		driver.quit();
		}


}

Code Giải thích:

  1. Ban đầu, bạn cần đặt đường dẫn đến tệp chromedriver.exe bằng phương thức thuộc tính set vì bạn đang sử dụng Trình duyệt Chrome để kiểm tra
  2. Tiếp theo, tạo một đối tượng của lớp Tùy chọn Chrome và chuyển nó tới phiên bản trình điều khiển web. Vì chúng ta muốn mở trình duyệt Chrome ở chế độ không đầu, nên chúng ta cần chuyển đối số –headless cho lớp Tùy chọn Chrome.
  3. Tạo một đối tượng của lớp Chrome DesiredCapabilities và hợp nhất đối tượng lớp Khả năng mong muốn với đối tượng lớp Tùy chọn Chrome bằng phương thức hợp nhất
  4. Tạo một đối tượng của lớp Trình điều khiển Chrome và chuyển Tùy chọn Chrome Selenium đối tượng như một đối số
  5. Cuối cùng, chúng ta cần phải vượt qua URL – https://demo.guru99.com/ đến phương thức driver.get
  6. In tiêu đề trang và đóng trình duyệt

Đầu ra

Trình duyệt sẽ không hiển thị với mã ở trên vì Chrome sẽ hoạt động ở chế độ Không đầu. Tiêu đề trang sẽ được tìm nạp và hiển thị như bên dưới.

Tùy chọn Chrome cho Chrome không đầu

Câu Hỏi Thường Gặp

Vâng. Selenium 4. Phương thức DesiredCapabilities đã bị loại bỏ và được thay thế bằng các lớp Tùy chọn của trình duyệt như ChromeOptions. Trong Selenium 3. Bạn đã hợp nhất chúng; trong Selenium 4. Bạn truyền trực tiếp ChromeOptions cho trình điều khiển.

Hãy gọi hàm addArguments với nhiều tham số, ví dụ như options.addArguments với start-maximized và incognito. Bạn cũng có thể kết hợp nhiều lệnh gọi này lại với nhau. Mỗi tham số sẽ tùy chỉnh cách khởi chạy phiên Chrome.

`addArguments` truyền các cờ dòng lệnh như "headless" hoặc "incognito" cho Chrome. `addExtensions` tải tệp mở rộng `.crx` đã được đóng gói vào phiên làm việc. Cả hai đều tùy chỉnh hành vi nhưng phục vụ các mục đích khác nhau.

Đúng vậy. Các trợ lý AI như Copilot tạo cấu trúc ChromeOptions và thiết lập khả năng, đề xuất tên đối số và giải thích các API đã lỗi thời. Luôn luôn xem lại kết quả đầu ra, vì tên cờ và Selenium Các phiên bản thay đổi thường xuyên.

Các công cụ tự phục hồi bằng AI tự động cập nhật các tham số, phát hiện các cờ không ổn định và đề xuất các giải pháp thay thế ổn định sau khi nâng cấp Chrome. Chúng giúp giảm chi phí bảo trì cho các lần chạy không giao diện người dùng và khắc phục sự không tương thích về khả năng giữa các môi trường CI.

Đúng vậy. ChromeOptions hoạt động với RemoteWebDriver để thực thi Grid. Bạn gắn các tùy chọn vào phiên làm việc từ xa, cho phép cùng một cấu hình chạy trên các máy và trình duyệt phân tán.

Điều này thường có nghĩa là phiên bản ChromeDriver và trình duyệt Chrome không khớp nhau. Hãy cài đặt ChromeDriver phù hợp hoặc sử dụng... Selenium Quản lý trong Selenium 4 để tự động giải quyết vấn đề về trình điều khiển.

Hãy sử dụng một tùy chọn thử nghiệm: một bản đồ tùy chọn với tham số download.default_directory được truyền qua setExperimentalOption. Khi đó, Chrome sẽ tự động lưu các tệp vào thư mục đó trong quá trình kiểm tra tự động.

Tóm tắt bài viết này với: