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.

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.
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:
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.
Bước 3) ExtracSao chép thư mục đã tải xuống vào thư mục Program Files.
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.
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.
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.






