Xvfb là gì?
Trình duyệt Scrapeless Scraping cung cấp một môi trường trình duyệt đám mây được quản lý, do đó các nhóm tự động hóa có thể chạy các quy trình làm việc trên trình duyệt mà không cần duy trì một màn hình Xvfb cục bộ.
Tóm tắt
- Xvfb là một máy chủ hiển thị X11 được hỗ trợ bởi bộ nhớ thay vì một màn hình vật lý. Các ứng dụng đồ họa có thể kết nối với nó ngay cả khi máy không có phần cứng hiển thị.
- Xvfb không phải là một trình duyệt và cũng không phải là một quản lý cửa sổ. Nó cung cấp máy chủ hiển thị mà các khách hàng X11 mong đợi.
- Chế độ trình duyệt không giao diện gốc và Xvfb giải quyết các vấn đề liên quan nhưng khác nhau. Chế độ không đầu thay đổi chế độ của ứng dụng; Xvfb cho phép ứng dụng hoạt động như một client đồ họa X11.
- Kích thước màn hình và độ sâu màu là các đầu vào cấu hình. Chúng có thể ảnh hưởng đến bố cục, ảnh chụp màn hình và các bài kiểm tra kết xuất.
- Một màn hình ảo không tái tạo lại một GPU vật lý. Tăng tốc đồ họa, phông chữ, dịch vụ máy tính để bàn và hành vi thiết bị cần xác thực riêng biệt.
Tại sao Cơ sở Hạ tầng Hiển thị Quan trọng
Xvfb ảnh hưởng đến cách trình duyệt hiển thị trạng thái, tạo nội dung hoặc quyết định khi nào hành động tự động là an toàn. Một định nghĩa chính xác ngăn các nhóm coi tín hiệu hẹp như một câu trả lời phổ quát. Nó cũng làm cho việc xác định lỗi trong quá trình kiểm thử dễ dàng hơn vì hành vi dự kiến của trình duyệt gắn liền với một vòng đời, API hoặc ranh giới hệ thống đã được tài liệu hóa.
Đối với tự động hóa web, câu hỏi thực tiễn luôn hẹp hơn "liệu trang đã sẵn sàng?" hoặc "liệu trình duyệt có trông thật không?" Bước tiếp theo có thể cần một điều khiển được bật, một khung hoàn thành điều hướng, một thành phần để gắn cây nội bộ của nó, hoặc một bề mặt kết xuất để giữ cho nhất quán. Các phần dưới đây biến khái niệm thành các kiểm tra có thể quan sát thay vì dựa vào hư cấu.
Xvfb trong Một Câu
Xvfb là một máy chủ hệ thống X Window mà render vào một bộ đệm hình ảnh ảo được lưu trữ trong bộ nhớ thay vì điều khiển một màn hình vật lý. Một ứng dụng X11 kết nối với một số hiển thị, tạo ra các cửa sổ, vẽ nội dung và nhận sự kiện qua giao thức X thông thường. Các điểm ảnh tồn tại ngay cả khi không có màn hình nào được kết nối.
The hướng dẫn chính thức Xvfb mô tả nó như một máy chủ X cho các máy không có phần cứng hiển thị hoặc thiết bị đầu vào vật lý. Bộ nhớ khung hình có thể sống trong bộ nhớ đã phân bổ, bộ nhớ chia sẻ, hoặc một tập tin ánh xạ bộ nhớ. Việc sử dụng thử nghiệm ban đầu đã mở rộng ra việc kết xuất theo lô, kiểm tra ứng dụng, và hỗ trợ cho các chương trình mà nhất quyết yêu cầu một máy chủ X.
Tên mở rộng thành X virtual framebuffer. Từ quan trọng là server. X11 clients không vẽ trực tiếp lên màn hình; chúng nói chuyện với một X server. Xvfb thực hiện phần server trong khi thay thế framebuffer có phần cứng bằng bộ nhớ. Đây là lý do tại sao việc thiết lập một biến môi trường hiển thị chỉ định các ứng dụng đến Xvfb thay vì làm cho chúng trở thành headless một cách độc lập.
Cách mà Màn hình Ảo Hoạt Động Với Nhau
Một màn hình X11 có một số màn hình và một hoặc nhiều màn hình. Xvfb khởi động trên một số màn hình có sẵn và tạo một màn hình với chiều rộng, chiều cao và độ sâu màu đã được cấu hình. Các quá trình client nhận địa chỉ màn hình thông qua biến môi trường DISPLAY. Đối với client, kết nối trông giống như một kết nối máy chủ X bình thường.
Xvfb xử lý các yêu cầu vẽ và giữ lại các pixel kết quả trong bộ nhớ khung hình của nó. Nó không tự động cung cấp một shell desktop, các trang trí cửa sổ, hoặc một trình quản lý ghép. Một số bộ kiểm tra chỉ cần máy chủ. Những cái khác cần một trình quản lý cửa sổ nhẹ hoặc các dịch vụ desktop bổ sung vì ứng dụng giả định rằng chúng tồn tại.
Luật Hướng dẫn sử dụng máy chủ X giải thích số hiển thị, tùy chọn máy chủ, ủy quyền và hành vi chung mà các máy chủ X chia sẻ. Sự phân tách này giúp khắc phục sự cố: một số hiển thị không khả dụng là vấn đề khởi động máy chủ, một giá trị DISPLAY bị thiếu là vấn đề định tuyến máy khách, và một trình quản lý cửa sổ bị thiếu là một giả định về môi trường máy tính để bàn.
Tại sao các bài kiểm tra trình duyệt sử dụng Xvfb
Trước khi các trình duyệt cung cấp chế độ headless bản địa trưởng thành, các máy tích hợp liên tục vẫn cần khởi động các bản xây dựng đồ họa của mình. Xvfb đã cung cấp màn hình mà các bản xây dựng đó mong đợi. Các trình chạy thử nghiệm có thể mở các trang, tương tác với các cửa sổ, chụp ảnh màn hình và đóng trình duyệt mà không cần một phiên làm việc trên màn hình vật lý.
Xvfb vẫn hữu ích khi một ứng dụng hoạt động khác nhau trong các chế độ đồ họa và không đầu, khi một công cụ cũ không có tùy chọn không đầu bản địa, hoặc khi một phụ thuộc GUI khăng khăng yêu cầu X11. Nó cũng có thể hỗ trợ các thử nghiệm trải dài từ một trình duyệt và một ứng dụng máy tính để bàn khác. Màn hình ảo cung cấp cho những khách hàng này một không gian tọa độ chung.
Cấu hình hình học ảnh hưởng đến các điểm ngắt phản hồi và kích thước ảnh chụp màn hình. Độ sâu màu có thể ảnh hưởng đến các đường dẫn hiển thị. Sự sẵn có của phông chữ đến từ hình ảnh của hệ điều hành, không phải từ chính Xvfb. Do đó, các bài kiểm tra có thể tái tạo xác định cấu hình hiển thị và các gói hệ thống xung quanh thay vì xem máy chủ ảo như toàn bộ môi trường.
Xvfb So Với Chế Độ Headless Gốc
Chế độ không có đầu gốc được triển khai bởi ứng dụng, chẳng hạn như một trình duyệt có thể hiển thị mà không cần kết nối với một máy chủ hiển thị màn hình để bàn. Xvfb thay vào đó cung cấp một máy chủ hiển thị để ứng dụng có thể chạy ở chế độ đồ họa của nó. Cả hai đều loại bỏ nhu cầu về một màn hình vật lý, nhưng chúng làm điều đó ở các lớp khác nhau.
Chế độ headless gốc thường cần ít quy trình nền hơn và dễ đóng gói hơn. Một trình duyệt đồ họa dưới Xvfb có thể hữu ích cho sự tương thích với các phiên bản cũ hơn, tiện ích mở rộng, hộp thoại hoặc tích hợp mà mong đợi một môi trường có cửa sổ. Các dự án trình duyệt hiện đại đã thu hẹp nhiều sự khác biệt về hành vi, nhưng các nhóm vẫn nên xác minh các tính năng chính xác mà các bài kiểm tra của họ thực hiện.
Chọn dựa trên hành vi ứng dụng quan sát được. Nếu chế độ không có giao diện được hỗ trợ hiển thị trang, xử lý tải xuống, chụp ảnh màn hình, và cung cấp các API mà quy trình làm việc cần, đó là tùy chọn địa phương đơn giản hơn. Nếu một phụ thuộc yêu cầu X11 hoặc bản dựng đồ họa có hành vi khác biệt về mặt vật chất, Xvfb có thể cầu nối khoảng cách đó. Một trình duyệt điều khiển từ xa được quản lý loại bỏ quyết định hiển thị địa phương khỏi máy khách hoàn toàn.
Giới hạn mà Xvfb không giải quyết được
Xvfb không tạo ra một GPU vật lý. WebGL có thể sử dụng kết xuất phần mềm hoặc thất bại nếu các thư viện đồ họa mong muốn vắng mặt. Nó không cài đặt phông chữ, thiết bị âm thanh, camera, dịch vụ D-Bus, một trình quản lý cửa sổ, hoặc một phiên làm việc. Mỗi giả định đó phải được cung cấp hoặc loại bỏ độc lập.
Xvfb cũng không làm cho việc tự động hóa trình duyệt khó xác định hơn. Dấu vân tay trình duyệt, danh tính mạng, thuộc tính tự động hóa, và hành vi yêu cầu vẫn là những mối quan tâm riêng biệt. Một hiển thị ảo có thể ảnh hưởng đến tín hiệu màn hình và đồ họa, nhưng nó không phải là một hệ thống chống phát hiện. Đối xử với nó như vậy dẫn đến những giả định an ninh không chính xác.
Đang chỉ mục tài liệu X.Org hiện tại bao gồm hệ sinh thái máy chủ X và máy khách rộng lớn hơn. Ngữ cảnh hệ sinh thái đó quan trọng khi một bài kiểm tra thất bại ngoài việc vẽ cơ bản. Kiểm tra nhật ký trình duyệt, nhật ký Xvfb, các thư viện đã cài đặt, phông chữ, quyền sở hữu quy trình, và ủy quyền hiển thị thay vì tăng độ trễ mà không có bằng chứng.
Hướng dẫn Hoạt động cho CI và Containers
Phân bổ một số hiển thị duy nhất cho mỗi công nhân song song hoặc sử dụng một trình bao bọc chọn một máy chủ chưa sử dụng. Cố định hình học màn hình và độ sâu màu trong cấu hình để kết quả không phụ thuộc vào mặc định. Bắt đầu máy chủ trước khách hàng và dừng nó khi công việc kết thúc. Giữ nhật ký từ cả máy chủ X và ứng dụng, vì một trong hai bên có thể giải thích một kết nối thất bại.
Sử dụng các kiểm soát truy cập phù hợp với môi trường. Việc vô hiệu hóa kiểm soát truy cập máy chủ X nói chung có thể phơi bày hiển thị cho các quy trình khác trên một máy chủ chia sẻ. Tách biệt các khối lượng công việc, hạn chế ai có thể kết nối, và tránh coi ranh giới container là quyết định an ninh duy nhất. Hình ảnh màn hình và bộ khung có thể chứa dữ liệu ứng dụng nhạy cảm, vì vậy giữ chúng chỉ trong thời gian cần thiết cho bài kiểm tra.
Đối với tự động hóa trình duyệt, xác minh một ma trận trang nhỏ sau khi cập nhật hình ảnh hoặc trình duyệt: HTML đơn giản, kết xuất JavaScript, canvas, WebGL khi cần, phông chữ, tải xuống, hộp thoại, và hình ảnh màn hình. So sánh chế độ không có giao diện địa phương và Xvfb chỉ dựa trên những hành vi quan trọng. Nếu việc duy trì hiển thị địa phương tiêu tốn nhiều nỗ lực hơn logic ứng dụng, một trình duyệt đám mây được quản lý có thể chuyển cơ sở hạ tầng đó ra khỏi trình chạy bài kiểm tra.
Lựa chọn Xvfb, Chế độ không có giao diện bản địa, hoặc Đám mây
Bắt đầu với điều kiện hoặc cấu hình nhỏ nhất chứng minh rằng nhiệm vụ có thể tiếp tục. Bảo tồn hành vi trình duyệt tương thích với tiêu chuẩn, sau đó chỉ thêm các kiểm soát hồ sơ nơi quy trình làm việc yêu cầu chúng. Ghi lại bản dựng trình duyệt và trạng thái liên quan để những khác biệt sau này có thể được giải thích. Một quan sát có thể lặp lại hữu ích hơn một tuyên bố chung rằng một trang, khung, hiển thị, hoặc dấu vân tay chỉ đơn giản là “hoàn thành” hoặc “an toàn.”
- Định nghĩa hành động tiếp theo. Nêu rõ những gì kịch bản hoặc người dùng cần làm sau bước chờ hoặc cấu hình.
- Chọn một tín hiệu quan sát được. Ưu tiên thuộc tính trình duyệt, trạng thái vòng đời, điều kiện phần tử, hoặc kết quả kết xuất trực tiếp hỗ trợ hành động đó.
- Giữ các giá trị liên quan nhất quán. Các cài đặt trình duyệt, hệ điều hành, màn hình, địa phương, đồ họa, và phiên nên mô tả một môi trường hợp lý.
- Xác thực hành vi ứng dụng bình thường. Một can thiệp về quyền riêng tư hoặc tự động hóa không nên im lặng phá vỡ API hoặc thành phần mà nó thay đổi.
- Ghi lại bằng chứng chẩn đoán. Lưu các URL, trạng thái, thông điệp bảng điều khiển, và tên cấu hình liên quan khi một kiểm tra thất bại.
Kết luận
Xvfb là một máy chủ X11 hỗ trợ bộ nhớ cho phép các ứng dụng đồ họa Linux chạy mà không cần phần cứng hiển thị vật lý. Nó vẫn hữu ích cho việc kiểm tra tính tương thích và khối lượng công việc GUI mong đợi X11, trong khi các chế độ không có giao diện bản địa thường đơn giản hơn cho các nhiệm vụ trình duyệt được hỗ trợ. Việc sử dụng đáng tin cậy phụ thuộc vào các cài đặt màn hình được cố định, phân lập quy trình, và xác thực riêng biệt của phông chữ, đồ họa, và dịch vụ máy tính để bàn.
Đang tài liệu Scrapeless Scraping Browser giải thích cách các phiên trình duyệt được quản lý được cấu hình, trong khi tổng quan sản phẩm Scraping Browser mô tả bề mặt tự động hóa trình duyệt. Những tài nguyên này cung cấp ngữ cảnh sản phẩm để áp dụng khái niệm trong một quy trình làm việc được ủy quyền.
Sẵn sàng để vượt qua các hiển thị ảo địa phương?
Di chuyển kết xuất trình duyệt, cấu hình phiên, và cơ sở hạ tầng tự động hóa vào một môi trường Chromium được quản lý.
Đăng ký hôm nay và nhận 5 đô la tín dụng miễn phí — không yêu cầu thẻ tín dụng.
Nhận tín dụng 5 đô la của bạn →Câu hỏi thường gặp
Xvfb có phải là một trình duyệt không có giao diện không?
Không. Xvfb là một máy chủ hiển thị X11 ảo, trong khi trình duyệt là một quy trình khách riêng biệt có thể chạy trong chế độ đồ họa hoặc không có giao diện bản địa.
Xvfb có yêu cầu GPU không?
Không. Xvfb có thể duy trì một bộ khung trong bộ nhớ mà không cần phần cứng hiển thị, mặc dù các ứng dụng yêu cầu đồ họa tăng tốc cần hỗ trợ và xác thực bổ sung.
Xvfb có bao gồm một trình quản lý cửa sổ không?
Không. Xvfb cung cấp máy chủ X; một quy trình làm việc phụ thuộc vào quản lý cửa sổ hoặc dịch vụ máy tính để bàn phải cung cấp chúng một cách riêng biệt.
Khi nào một nhóm nên ưu tiên chế độ không có giao diện bản địa?
Ưu tiên chế độ không có giao diện bản địa khi nó hỗ trợ các tính năng trình duyệt cần thiết và tạo ra kết quả đúng, vì điều này thường giảm cơ sở hạ tầng địa phương và quản lý quy trình.