Nội dung bài viết
Headless Browser là gì?
- Headless browser là trình duyệt web không có giao diện đồ họa người dùng (GUI). Tương tác với trang web trong môi trường giống như các trình duyệt web phổ biến khác, được thực hiện thông qua giao diện dòng lệnh
- Hữu ích cho việc kiểm thử các trang web vì có thể render cấu trúc HTML (DOM) giống như các trình duyệt thông thường, bao gồm cả style như: layout/ font/ colour và có thể thực thi cả javascript/ ajax
- Được sử dụng cho các mục đích:
- Kiểm thử tự động các ứng dụng web (thường sử dụng với Nodejs application)
- Chụp ảnh màn hình 1 web page
- Tạo file pdf
- Thu thập (Crawl) dữ liệu trên các website
- Tấn công DDOS tới các website
- Danh sách headless browser:
- Google Chrome
- Linux/ MacOS: version >= 59
- Windows: version >=60
- Mozilla Firefox
- Linux: version >=55
- Windows/ MacOS: 56
- PhantomJS
- HtmlUnit
- Ghost
- Google Chrome
- Ưu/ nhược điểm của headless browser trong automation testing:
- Ưu điểm: Tốc độ nhanh, kết quả kiểm thử sẽ có sớm hơn so với sử dụng các non-headless browser
- Nhược điểm:
- Độ ổn định và chính xác không cao/ nhiều trường hợp xảy ra bug trên headless browser nhưng ko tìm thấy trên non-headless browser
- Không work với những case như drag-drop hoặc upload/ download (Open File Dialog)
Run test với Chrome Headless
- Để chạy được headless thì trước khi khởi tạo browser cần thêm 2 tham số vào ChromeOptions/ FirefoxOptions
- headless: trình duyệt sẽ thực thi ở chế độ headless
- window-size: cần set trình duyệt với 1 resolution cố định (nếu ko thì nó có thể hiển thị kích thước như phiên bản web mobile hoặc ở 1 độ phân giải ko cố định) – có thể sử dụng tính năng này để test responsive
[code language=”java” autolinks=”true”]
ChromeOptions options = new ChromeOptions();
options.addArguments(“headless”);
options.addArguments(“window-size=1920×1080”);
driver = new ChromeDriver(options);
[/code]
Run test với Firefox Headless
[code language=”java” autolinks=”true”]
FirefoxOptions options = new FirefoxOptions();
options.addArguments(“headless”);
options.addArguments(“window-size=1920×1080”);
driver = new FirefoxDriver(options);
[/code]
a cho em hỏi là em mở headless chrome đến một profile với –user-data-dir = Path userdata , nhưng nó không kết nối đến profile chỉ định mà nó dùng profile defaul thì e phải làm thế nào để nó chỉ đến profile mình cần a.
code e đây :
options.addArguments(“user-data-dir=Path//UserData”)
.addArguments(“–profile-directory=Profile 1”)
.addArguments(“headless”)
.addArguments(“disable-gpu”);