HTMLUnitDriver trong SeleniumHướng dẫn sử dụng Trình duyệt không giao diện người dùng

⚡ Tóm tắt thông minh

HtmlUnitDriver là triển khai headless nhanh nhất của Selenium WebDriver, trong khi PhantomJS, từng là một trình duyệt không giao diện người dùng phổ biến dựa trên GhostDriver, đã bị ngừng hỗ trợ từ năm 2018 và hiện được thay thế bởi Chrome không giao diện người dùng. Firefoxvà Playwright dành cho các quy trình tự động hóa hiện đại.

  • 🤖 Khái niệm không đầu: chạy Selenium Các bài kiểm tra không có giao diện người dùng đồ họa (GUI) để tiết kiệm CPU, bộ nhớ và thời gian thực thi trên toàn bộ quy trình CI.
  • ⚙️ Độ mạnh của HtmlUnitDriver: Tinh khiết Java Công cụ này không cần tệp nhị phân bên ngoài, lý tưởng cho việc kiểm tra nhanh ở cấp độ HTTP và tương tác biểu mẫu nhanh chóng.
  • 🚀 Thông báo ngừng hỗ trợ PhantomJS: Việc phát triển PhantomJS đã dừng lại vào năm 2018; các nhóm nên chuyển sang sử dụng Chrome không giao diện người dùng (headless Chrome) và các phần mềm tương tự. Firefoxhoặc là nhà viết kịch.
  • Các giải pháp thay thế hiện đại: Chrome không đầu và Firefox cung cấp chính xác JavaHiển thị tập lệnh, giao thức DevTools và khả năng gỡ lỗi tốt hơn.
  • 🧪 Các trường hợp sử dụng tốt nhất: Các tác vụ kiểm tra lỗi hệ thống, bộ kiểm thử hồi quy, kiểm thử tải và tích hợp liên tục trên các máy chủ Linux không giao diện người dùng.

HTMLUnitDriver trong Selenium

Trình duyệt không giao diện (headless browser) là trình duyệt web không có giao diện người dùng đồ họa. Nó có thể chạy ngầm mà không cần hiển thị hình ảnh.tracNó cung cấp một cách hiệu quả và tiết kiệm thời gian cũng như nguồn lực để kiểm thử các ứng dụng web. Trong bài viết này, chúng ta sẽ tìm hiểu trình duyệt không giao diện (headless browser) là gì, khi nào nên sử dụng kiểm thử trình duyệt không giao diện và cách thực hiện nó. Selenium HtmlUnitDriver và PhantomJS.

Trình duyệt không giao diện (Headless Browser) là gì?

Trình duyệt không giao diện (headless browser) là một trình duyệt web. không có giao diện người dùng đồ họaChương trình này hoạt động giống như một trình duyệt thông thường, nhưng nó không hiển thị bất kỳ cửa sổ giao diện người dùng nào trong quá trình thực thi.

Một số ví dụ về trình điều khiển trình duyệt không giao diện người dùng bao gồm:

  • Đơn vị Html
  • Ma
  • PhantomJS (đã lỗi thời)
  • ZombieJS
  • Watir-webdriver
  • Chrome không đầu
  • Không đầu Firefox

Khi nào nên sử dụng kiểm tra trình duyệt không đầu?

Trong thời đại kỹ thuật số ngày nay, các ứng dụng web được xây dựng để tương thích với nhiều thiết bị và nền tảng khác nhau. Điều này tạo ra thách thức cho các nhà phát triển, những người phải đảm bảo ứng dụng của họ hoạt động trơn tru trên các môi trường khác nhau. Kiểm thử trình duyệt không giao diện (headless browser testing) là một giải pháp lý tưởng vì nó cho phép các nhà phát triển xác thực ứng dụng web của họ mà không cần giao diện người dùng đồ họa. Bằng cách sử dụng kiểm thử trình duyệt không giao diện, các nhà phát triển có thể nhanh chóng kiểm thử các ứng dụng web phức tạp với nhiều thành phần và phụ thuộc, mở đường cho quá trình phát triển nhanh hơn, ít lỗi hơn và người dùng hài lòng hơn.

Kiểm tra trình duyệt không đầu với Selenium

Selenium là một công cụ mạnh mẽ để kiểm thử trình duyệt không giao diện người dùng, cho phép các nhà phát triển chạy các bài kiểm thử tự động mà không cần hiển thị giao diện người dùng. Bằng cách chạy các bài kiểm thử trong nền, Selenium tiết kiệm thời gian và nguồn lực đồng thời giúp íchping Xác định các vấn đề có thể không rõ ràng trong môi trường kiểm thử dựa trên giao diện người dùng truyền thống. Điều này bao gồm các vấn đề về hiệu suất và bố cục chỉ trở nên rõ ràng trong môi trường không có giao diện người dùng. Tuy nhiên, điều quan trọng là phải cân bằng giữa kiểm thử không có giao diện người dùng và kiểm thử dựa trên giao diện người dùng truyền thống để đảm bảo độ bao phủ toàn diện.

Các ví dụ phổ biến về trình duyệt không đầu

Hiện nay có rất nhiều trình duyệt không giao diện người dùng (headless browser), mỗi trình duyệt đều có những tính năng và lợi ích riêng, phù hợp với các trường hợp sử dụng khác nhau. Chúng ta sẽ thảo luận về chúng bên dưới.

PhantomJS

Thông báo ngừng hỗ trợ: Việc phát triển tích cực PhantomJS đã dừng lại vào năm 2018 và dự án không còn được duy trì nữa. Các dự án mới nên ưu tiên sử dụng Chrome không giao diện người dùng (headless Chrome) hoặc các trình duyệt khác có giao diện người dùng tương tự. Firefox, hoặc là Nhà soạn kịch Dành cho tự động hóa không giao diện người dùng hiện đại. Ví dụ PhantomJS bên dưới chỉ được đưa vào để tham khảo.

PhantomJS là một trình duyệt không giao diện người dùng, sử dụng WebKit làm công cụ hiển thị và hỗ trợ các chuẩn web như HTML5, CSS3, v.v. JavaScript này có thể được sử dụng cho các tác vụ chụp màn hình và tự động hóa trang. Nó là mã nguồn mở và tương thích với nhiều hệ điều hành.

Ví dụ về Selenium với PhantomJS không đầu trong Python:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
# Set up PhantomJS options
phantomjs_options = webdriver.DesiredCapabilities.PHANTOMJS.copy()
phantomjs_options['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
# Set up the PhantomJS driver
driver = webdriver.PhantomJS('/path/to/phantomjs', desired_capabilities=phantomjs_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

cơ rôm

Chrome là trình duyệt phổ biến nhất trên thế giới và cũng cung cấp chế độ không giao diện người dùng (headless mode). Nó có thể được sử dụng trên nhiều nền tảng và hỗ trợ các ngôn ngữ lập trình và framework phổ biến. Các công cụ gỡ lỗi tích hợp sẵn và tài liệu hướng dẫn chi tiết giúp người dùng dễ dàng sử dụng và khắc phục mọi sự cố có thể phát sinh trong quá trình thử nghiệm.

Ví dụ về Chrome không đầu với Selenium in Python:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Set up Chrome options
chrome_options = Options()
chrome_options.add_argument('--headless')  # Run Chrome in headless mode
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# Set up the Chrome driver
driver = webdriver.Chrome('/path/to/chromedriver', options=chrome_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Firefox

Firefox là một trình duyệt web phổ biến, cũng có thể được sử dụng như một trình duyệt không giao diện người dùng (headless browser) để thử nghiệm. Một lợi ích của việc sử dụng Firefox Ưu điểm của trình duyệt không giao diện người dùng này là dung lượng nhỏ, giúp nó trở thành một lựa chọn linh hoạt để thử nghiệm trên các hệ điều hành khác nhau. Kết hợp với tài liệu hướng dẫn phong phú và sự hỗ trợ từ cộng đồng, Firefox Đây là lựa chọn tuyệt vời cho các nhóm đang thử nghiệm tự động hóa trình duyệt không giao diện người dùng.

Ví dụ về không đầu Firefox với Selenium in Python:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
# Set up Firefox options
firefox_options = Options()
firefox_options.add_argument('--headless')  # Run Firefox in headless mode
# Set up the Firefox driver
driver = webdriver.Firefox(options=firefox_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Ưu điểm của việc kiểm tra trình duyệt không đầu

  • Thực hiện kiểm tra nhanh hơn
  • Thử nghiệm hiệu quả về chi phí
  • Phạm vi kiểm tra tốt hơn
  • Tính linh hoạt trong việc chạy thử nghiệm
  • Tích hợp dễ dàng hơn với các quy trình CI/CD.

Nhược điểm của việc kiểm tra trình duyệt không đầu

  • Thiếu giao diện người dùng đồ họa (GUI) hiển thị rõ ràng để kiểm tra thủ công.
  • Việc gỡ lỗi có thể khó khăn hơn nếu không có màn hình.
  • Phạm vi bao phủ hành vi cụ thể của trình duyệt còn hạn chế.

Trình điều khiển đơn vị Html

HtmlUnitDriver là phiên bản trình duyệt không giao diện người dùng (headless browser) nhẹ nhất và nhanh nhất. Selenium WebDriver. Nó dựa trên HtmlUnit và còn được biết đến với tên gọi là... Trình điều khiển trình duyệt không đầuNó hoạt động giống như Chrome, IE hoặc... Firefox HtmlUnitDriver là một trình điều khiển, nhưng nó không có giao diện người dùng đồ họa (GUI), do đó quá trình thực thi kiểm thử không hiển thị trên màn hình. HtmlUnitDriver vẫn đang được duy trì và phân phối thông qua... org.seleniumhq.selenium:htmlunit3-driver Thành phần Maven.

Các tính năng của HtmlUnitDriver:

  • Hỗ trợ các giao thức HTTPS và HTTP
  • Hỗ trợ phản hồi HTML (nhấp vào liên kết, gửi biểu mẫu, duyệt mô hình DOM của tài liệu HTML, v.v.)
  • Hỗ trợ cookie
  • Hỗ trợ máy chủ proxy
  • Hỗ trợ xác thực cơ bản và NTLM
  • Rắn JavaScript hỗ trợ
  • Hỗ trợ các phương thức gửi dữ liệu GET và POST.
  • Khả năng tùy chỉnh các tiêu đề yêu cầu được gửi đến máy chủ
  • Khả năng kiểm soát xem các phản hồi lỗi từ máy chủ có nên gây ra ngoại lệ hay được trả về dưới dạng các trang thuộc loại phù hợp.

Các bước sử dụng HtmlUnitDriver với Selenium

Bước 1) In EclipseSao chép đoạn mã sau. Thêm phần tiêu chuẩn. Selenium Thêm các tệp thư viện vào dự án. Không cần thêm tệp JAR nào khác.

package  htmldriver;
import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;	
import org.openqa.selenium.htmlunit.HtmlUnitDriver;		
public class htmlUnitYest {				
		public static void main(String[] args) {
                     // Creating a new instance of the HtmlUnit driver
                      
                     WebDriver driver = new HtmlUnitDriver();
                      
           		     // Navigate to Google		
                     driver.get("http://www.google.com");					
          
					 // Locate the searchbox using its name		
                     WebElement element = driver.findElement(By.name("q"));	
                     
                    // Enter a search query		
                    element.sendKeys("Guru99");	
                   
		            // Submit the query. WebDriver searches for the form using the text input element automatically		
                    // No need to locate/find the submit button		
                    element.submit();			
                    
            		// This code will print the page title		
                    System.out.println("Page title is: " + driver.getTitle());		
                    
                    driver.quit();			
         }		
}

Bước 2) Chạy mã. Bạn sẽ thấy không có trình duyệt nào được mở và kết quả được hiển thị trong bảng điều khiển.

Các bước sử dụng HtmlUnitDriver với Selenium

Lợi ích của HtmlUnitDriver

  • Vì không sử dụng giao diện đồ họa người dùng (GUI), các bài kiểm tra chạy ngầm mà không gây gián đoạn về mặt hình ảnh.
  • So với các phiên bản trình điều khiển khác, tốc độ thực thi nhanh hơn.
  • Bạn cũng có thể mô phỏng các phiên bản trình duyệt khác nhau khi chạy thử nghiệm thông qua HtmlUnitDriver.
  • Nó hoạt động trên mọi nền tảng và dễ dàng chạy nhiều bài kiểm tra đồng thời. Nó lý tưởng cho... kiểm tra tải.

Hạn chế:

  • Nó không thể mô phỏng hoàn toàn JavaHành vi kịch bản của mọi công cụ trình duyệt thực sự

PhantomJS

Nhắc nhở: PhantomJS đã lỗi thời và không còn được duy trì nữa. Để sử dụng cho các tác vụ không giao diện người dùng (headless), hãy sử dụng... Selenium với Chrome không giao diện người dùng hoặc FirefoxHoặc chuyển sang Playwright. Phần bên dưới chỉ được giữ lại để tham khảo cho các tài liệu cũ.

PhantomJS là một trình duyệt không giao diện người dùng (headless browser) với... JavaAPI dạng script. Trước đây, nó được sử dụng để kiểm thử website không có giao diện người dùng, truy cập và thao tác với các trang web, và được tích hợp sẵn trong API DOM tiêu chuẩn.

Để sử dụng PhantomJS với SeleniumBạn cần GhostDriver. GhostDriver là một triển khai của giao thức WebDriver Wire Protocol ở dạng văn bản thuần túy. JavaĐoạn mã dành cho PhantomJS.

Các phiên bản PhantomJS sau này tích hợp GhostDriver, vậy nên Không cần cài đặt riêng.

Hệ thống hoạt động như sau:

PhantomJS

Các bước để chạy Selenium với PhantomJS

Bước 1) Bạn cần Eclipse với Selenium cài đặt.

Bước 2) Tải xuống PhantomJS đây.

Các bước để chạy Selenium Với PhantomJS

Bước 3) ExtracSao chép thư mục đã tải xuống vào thư mục Program Files.

Các bước để chạy Selenium Với PhantomJS

Bước 4) Tải xuống Trình điều khiển PhantomJS từ đâyThêm tệp JAR vào dự án của bạn.

Các bước để chạy Selenium Với PhantomJS

Bước 5) Dán đoạn mã sau vào Eclipse.

package htmldriver;	
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;	

public class phantom {				
		public static void main(String[] args) {
        	        File file = new File("C:/Program Files/phantomjs-2.0.0-windows/bin/phantomjs.exe");				
                    System.setProperty("phantomjs.binary.path", file.getAbsolutePath());		
                    WebDriver driver = new PhantomJSDriver();	
                    driver.get("http://www.google.com");         
                    WebElement element = driver.findElement(By.name("q"));	
                    element.sendKeys("Guru99");					
                    element.submit();         			
                    System.out.println("Page title is: " + driver.getTitle());		
                    driver.quit();			
           }		
}

Bước 6) Chạy đoạn mã. Bạn sẽ thấy kết quả trong cửa sổ dòng lệnh và trình duyệt sẽ không được mở.

LƯU Ý: Lần chạy đầu tiên, tùy thuộc vào cài đặt của bạn, bạn có thể thấy cảnh báo bảo mật từ... Windows Để cho phép PhantomJS chạy. Nhấp chuột Cho phép truy cập.

Các bước để chạy Selenium Với PhantomJS

Nhiều tổ chức từ trước đến nay đã sử dụng PhantomJS cho các nhiệm vụ như:

  • Kiểm thử không giao diện người dùng
  • Chụp màn hình
  • Tự động hóa trang
  • Giám sát mạng
  • Hiển thị ảnh chụp màn hình bảng điều khiển cho người dùng của họ.
  • Chạy các bài kiểm tra đơn vị trên dòng lệnh
  • Chuyển đổi sổ tay nhân viên từ HTML sang PDF
  • Kết hợp với QUnit để tạo bộ kiểm thử.

Đối với các dự án mới, hãy thay thế các trường hợp sử dụng PhantomJS này bằng Chrome không giao diện người dùng (headless Chrome), không giao diện người dùng (headless). Firefoxhoặc Playwright, những ứng dụng nhận được các bản cập nhật bảo mật và hiển thị liên tục.

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

Trình duyệt không giao diện (headless browser) là trình duyệt web hoạt động mà không có giao diện người dùng đồ họa. Trong trường hợp này, Selenium, các trình điều khiển không giao diện người dùng như HtmlUnitDriver, Chrome không giao diện người dùng và các trình điều khiển không giao diện người dùng khác. Firefox Thực hiện các bài kiểm tra trong nền, giúp tiết kiệm tài nguyên và tăng tốc các bộ công cụ tự động hóa.

Không. Việc phát triển PhantomJS đã bị tạm dừng vào năm 2018 và dự án này không còn được duy trì nữa. Selenium Cũng đã loại bỏ PhantomJSDriver khỏi các bản phát hành gần đây. Các bài kiểm tra mới nên sử dụng Chrome không giao diện người dùng (headless Chrome), không giao diện người dùng (headless). Firefoxhoặc là nhà viết kịch.

HtmlUnitDriver là một trình điều khiển thuần túy. Java Công cụ này rất nhanh và không cần tệp nhị phân trình duyệt, nhưng nó có những hạn chế nhất định. JavaĐộ chính xác của kịch bản. Chrome không giao diện người dùng sử dụng công cụ Blink thực sự, vì vậy nó hiển thị các nội dung hiện đại. JavaCác trang web sử dụng nhiều mã lập trình có thể đọc chính xác hơn, nhưng đổi lại sẽ tiêu tốn nhiều tài nguyên hơn.

Sử dụng Selenium với Chrome không giao diện người dùng hoặc không giao diện người dùng Firefox Để kiểm thử chính xác trên từng trình duyệt, hoặc sử dụng Playwright để tự động hóa song song trên nhiều trình duyệt. Các công cụ này nhận được các bản cập nhật bảo mật thường xuyên và hỗ trợ các tính năng hiện đại như Giao thức DevTools và chặn mạng.

Các công cụ hỗ trợ bởi AI có thể tự động sửa lỗi định vị khi DOM thay đổi, dự đoán các bài kiểm tra không ổn định và phân tích ảnh chụp màn hình để phát hiện các lỗi hiển thị. Điều này giúp giảm thiểu các lần chạy không giao diện người dùng bị lỗi trong CI và giúp các nhóm QA duy trì sự ổn định. Selenium các quy trình với ít sự can thiệp thủ công hơn.

Đúng vậy. Các trợ lý AI hiện đại có thể tạo ra... Selenium Các tập lệnh WebDriver trong Java, Python, hoặc là JavaTập lệnh được viết theo các bước đơn giản bằng tiếng Anh, bao gồm cả các tùy chọn chạy ngầm cho Chrome hoặc FirefoxLuôn kiểm tra lại mã được tạo ra để đảm bảo các lệnh chờ, bộ chọn và bảo mật chính xác trước khi chạy trên hệ thống CI.

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