Tất cả các bạn developer phải quen thuộc với kiểm tra dựa trên UI. Điều này đảm bảo rằng chương trình của chúng ta hoạt động chính xác trong thời gian dài. Tuy nhiên, có nhiều vấn đề với kiểm tra dựa trên UI. Điều khiến tôi phiền lòng nhất là sự ổn định. Đôi khi, các bài kiểm tra dựa trên UI không thể tương tác với trình duyệt.
Câu trả lời cho vấn đề này là kiểm tra trình duyệt không đầu.
Với kiểm tra trình duyệt không đầu, bạn thực hiện kiểm tra end-to-end mà trình duyệt không tải giao diện người dùng của ứng dụng. Do đó, mọi thứ chạy nhanh hơn và các bài kiểm tra tương tác trực tiếp với trang, loại bỏ mọi khả năng không ổn định. Các bài kiểm tra của bạn trở nên đáng tin cậy hơn, nhanh hơn và hiệu quả hơn.
Về cơ bản, giải pháp "không đầu" là tách biệt frontend và backend của một hệ thống:
Ví dụ, bạn có thể thay đổi phần mềm cung cấp năng lượng cho chatbot dịch vụ khách hàng (backend) mà không thay đổi cách giao diện của bot được trình bày cho khách hàng (frontend). Trong các hệ thống truyền thống được kết nối, những thay đổi phải được thực hiện thông qua cả hai - điều này tốn thời gian, tốn kém và tiềm ẩn rủi ro.
Khi các công ty nhận thấy sự linh hoạt và khả năng mở rộng ngày càng tăng của các giải pháp không đầu, sự phổ biến của chúng đang tăng lên nhanh chóng:
Bạn có bất kỳ ý tưởng tuyệt vời nào và nghi ngờ về web scraping và Browserless?
Hãy xem những developer khác đang chia sẻ gì trên Discord và Telegram!
Trình duyệt không đầu có những ưu điểm đáng kể về hiệu suất, hiệu quả tự động hóa và quản lý tài nguyên, nhưng chúng có một số hạn chế trong việc gỡ lỗi và mô phỏng trải nghiệm người dùng thực tế.
1. Hiệu suất nhanh hơn:
Không cần hiển thị giao diện đồ họa, điều này làm giảm mức tiêu thụ tài nguyên, do đó tốc độ thực thi thường nhanh hơn trình duyệt có giao diện, đặc biệt trong các kịch bản thu thập dữ liệu web và kiểm tra.
2. Sử dụng tài nguyên thấp:
Trình duyệt không đầu tiêu thụ ít bộ nhớ và CPU hơn và phù hợp cho các tác vụ tự động hóa quy mô lớn và các kịch bản thực thi song song.
3. Hiệu quả cao của các tác vụ tự động hóa:
Phù hợp cho các tác vụ như thu thập dữ liệu web, kiểm tra tự động, mô phỏng hoạt động của người dùng và thường được sử dụng trong kiểm tra QA, giám sát SEO, thu thập dữ liệu, v.v.
4. Tích hợp dễ dàng:
Trình duyệt không đầu thường được kết hợp với các công cụ tự động hóa như Puppeteer, Selenium, Playwright, v.v. và có thể được tích hợp dễ dàng vào quy trình tích hợp và triển khai liên tục (CI/CD).
5. Hỗ trợ đa nền tảng:
Trình duyệt không đầu hỗ trợ các hệ điều hành và kernel trình duyệt khác nhau, chẳng hạn như Chrome, Firefox, v.v. và có thể được áp dụng linh hoạt trong các môi trường phát triển và kiểm tra khác nhau.
6. Độ ẩn giấu cao:
Trình duyệt không đầu không có giao diện người dùng, phù hợp cho các tác vụ tự động hóa và không dễ bị phát hiện, đặc biệt là khi thu thập dữ liệu trang web, điều này có thể làm giảm nguy cơ bị trang web phát hiện.
1. Khó gỡ lỗi:
Bởi vì không có GUI, quá trình gỡ lỗi trình duyệt không đầu khó khăn hơn so với trình duyệt thông thường. Các developer không thể trực quan xem trạng thái hiển thị của trang web và thường cần dựa vào nhật ký hoặc ảnh chụp màn hình.
2. Không hoàn toàn phù hợp với trải nghiệm người dùng thực tế:
Mặc dù trình duyệt không đầu tương tự như trình duyệt giao diện về chức năng, nhưng chúng có thể không mô phỏng chính xác trải nghiệm tương tác của người dùng thực tế trong một số kịch bản (chẳng hạn như các yếu tố UI phức tạp hoặc hoạt hình).
3. Một số trang web phát hiện trình duyệt không đầu:
Một số trang web có cơ chế chống tự động hóa có thể xác định và chặn các yêu cầu từ trình duyệt không đầu, đặc biệt là trong các kịch bản thu thập dữ liệu nơi chúng có thể bị chặn.
4. Không thể xử lý một số tính năng frontend:
Mặc dù trình duyệt không đầu mạnh mẽ, nhưng chúng có thể không hoạt động tốt như trình duyệt giao diện trong một số tính năng frontend nâng cao (chẳng hạn như hoạt hình phức tạp và kết xuất 3D).
5. Khó cho người mới bắt đầu:
Đối với những người mới bắt đầu chưa quen với kiểm tra tự động hoặc thu thập dữ liệu web, đường cong học tập để cấu hình và sử dụng trình duyệt không đầu là dốc và có thể mất nhiều thời gian để thành thạo.
Kiểm tra trình duyệt không đầu thực sự là một công cụ rất hữu ích, đặc biệt trong các kịch bản hạn chế tài nguyên hoặc cần thực thi các tác vụ tự động hóa hiệu quả. Bạn có thể sử dụng kiểm tra trình duyệt không đầu trong các trường hợp sau:
1. Tương tác HTML tự động:
Kiểm tra các hành vi tương tác của người dùng như gửi biểu mẫu, nhấp vào nút và lựa chọn menu thả xuống. Với trình duyệt không đầu, bạn có thể mô phỏng các hoạt động này và xác minh xem phản hồi có chính xác hay không.
2. Kiểm tra thực thi JavaScript:
Trình duyệt không đầu có thể giúp kiểm tra hiệu quả thực thi JavaScript trên trang web và xác minh tính chính xác của nội dung động. Nó đặc biệt phù hợp cho các ứng dụng có nhiều logic kết xuất phía client.
3. Thu thập dữ liệu web:
Trình duyệt không đầu có thể bỏ qua các cơ chế chống thu thập dữ liệu đơn giản, tải nội dung web động và thu thập dữ liệu từ trang web. Trình duyệt không đầu rất hiệu quả cho các tác vụ thu thập dữ liệu yêu cầu kết xuất trang frontend phức tạp.
4. Giám sát mạng và kiểm tra hiệu suất:
Trình duyệt không đầu có thể giám sát các yêu cầu mạng, thời gian tải, v.v., giúp phân tích các điểm nghẽn hiệu suất của trang và phù hợp cho các tác vụ tối ưu hóa và giám sát hiệu suất trang web.
5. Xử lý các cuộc gọi Ajax:
Khi một trang web dựa vào Ajax để tải dữ liệu, trình duyệt không đầu có thể nắm bắt và xử lý các yêu cầu này và đảm bảo chúng được tải và hiển thị chính xác.
6. Tạo ảnh chụp màn hình trang web:
Trong kiểm tra tự động, tạo ảnh chụp màn hình trang giúp phát hiện lỗi được sử dụng để tạo tài liệu và phù hợp để kiểm tra trực quan bố cục và nội dung trang.
Bước 1. Cài đặt các phụ thuộc của Selenium
Trước tiên, hãy đảm bảo bạn đã cài đặt Selenium trong môi trường phát triển của mình. Bạn có thể cài đặt nó bằng lệnh sau:
pip install selenium
Bước 2. Lấy khóa API
Nstbrowser cung cấp các dịch vụ đám mây tích hợp Browserless. Bạn cần lấy khóa API tương ứng từ Nstbrowser. Đăng nhập vào nền tảng Nstbrowser và tìm khóa API Browserless từ bảng điều khiển hoặc nhận khóa API trong phần Browserless của client.
Bước 3. Cấu hình Selenium để tích hợp với Browserless
Selenium cần sử dụng API Browserless để kiểm tra trình duyệt không đầu. Bạn có thể cấu hình command_executor
của WebDriver với URL WebSocket được cung cấp bởi Nstbrowser.
Dưới đây là một mã ví dụ Python cho thấy cách sử dụng Browserless cho kiểm tra trình duyệt không đầu của Selenium:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Thiết lập tùy chọn trình duyệt Chrome
chrome_options = Options()
chrome_options.add_argument('--headless') # Kích hoạt chế độ không đầu
chrome_options.add_argument('--disable-gpu') # Nếu bạn đang sử dụng Windows
# URL WebSocket của Browserless của Nstbrowser
nstbrowser_url = 'wss://chrome.nstbrowser.com/webdriver?token=YOUR_NSTBROWSER_API_KEY'
# Thiết lập WebDriver từ xa để kết nối với Browserless của Nstbrowser
driver = webdriver.Remote(
command_executor=nstbrowser_url,
options=chrome_options
)
# Truy cập trang web thử nghiệm
driver.get("https://www.example.com")
# In tiêu đề trang web
print(driver.title)
# Đóng trình duyệt
driver.quit()
Bước 1. Đăng ký Nstbrowser và lấy khóa API
Bước 2. Cài đặt Cypress
npm install cypress
Bước 3. Cấu hình Cypress để kết nối với Browserless
Tạo hoặc sửa đổi tệp cấu hình Cypress cypress.json
hoặc cypress.config.js
trong thư mục gốc dự án và thêm cấu hình Browserless vào tệp. Xác định ví dụ Browserless từ xa thông qua tùy chọn cấu hình browser
của Cypress:
{
"browser": "chrome",
"chromeWebSecurity": false,
"baseUrl": "https://your-application-url.com",
"video": false
}
Bước 4. Thiết lập Cypress để kết nối với ví dụ Browserless của bạn
Cấu hình Cypress để kết nối với ví dụ Browserless dựa trên đám mây của bạn thông qua khóa API. Trong tập lệnh kiểm tra của bạn, bạn có thể kết nối bằng cách:
CYPRESS_REMOTE_BROWSER_WS=ws://your-browserless-api-url
CYPRESS_API_KEY=your-api-key
Bước 5. Chạy các bài kiểm tra Cypress
npx cypress run --browser chrome --headless
Điều này sẽ tận dụng Browserless của Nstbrowser cho kiểm tra không đầu, giúp kiểm tra hiệu quả hơn và thực thi nhiều ví dụ trình duyệt qua đám mây.
Cấu hình Puppeteer để kiểm tra không đầu với Browserless rất đơn giản. Bạn có thể tích hợp với Puppeteer thông qua API Browserless để tránh cài đặt và chạy Chrome hoặc Chromium cục bộ.
Bước 1. Cài đặt Puppeteer
Trước tiên, hãy đảm bảo bạn đã cài đặt Node.js trên hệ thống của mình. Sau đó, cài đặt Puppeteer trong dự án của bạn:
npm install puppeteer
Bước 2. Lấy khóa API Browserless
Bước 3. Cấu hình Puppeteer Browserless với Nstbrowser
Puppeteer có thể kết nối với dịch vụ trình duyệt không đầu thông qua URL WebSocket. Dưới đây là mã ví dụ về cách sử dụng Browserless để kiểm tra trình duyệt không đầu:
const puppeteer = require('puppeteer-core');
(async () => {
// URL WebSocket của Browserless
const browser = await puppeteer.connect({
browserWSEndpoint: 'wss://chrome.nstbrowser.com/webdriver?token=YOUR_NSTBROWSER_API_KEY'
});
// Mở một trang mới
const page = await browser.newPage();
// Truy cập trang web
await page.goto('https://www.example.com');
// In tiêu đề trang
const title = await page.title();
console.log(`Tiêu đề trang là: ${title}`);
// Ví dụ ảnh chụp màn hình
await page.screenshot({ path: 'example.png' });
// Đóng ví dụ trình duyệt
await browser.close();
})();
Bước 4. Thực thi tập lệnh
Bạn có thể chạy tập lệnh này thông qua Node.js, điều này sẽ thực hiện kiểm tra trình duyệt không đầu thông qua Browserless của Nstbrowser và thực hiện các hành động bạn chỉ định. Dưới đây là lệnh để thực thi tập lệnh:
node your-script.js
Bước 5. Xem bảng điều khiển Nstbrowser
Trong bảng điều khiển Nstbrowser, bạn có thể theo dõi trạng thái chạy của trình duyệt không đầu theo thời gian thực, bao gồm nhật ký, số lần gọi API và thông tin chi tiết về ví dụ trình duyệt. Điều này rất hữu ích để gỡ lỗi và tối ưu hóa các tác vụ tự động hóa.
headless: true
) theo mặc định, nghĩa là không hiển thị giao diện người dùng. Nếu bạn cần chuyển sang chế độ headless
, bạn có thể đặt headless thành false
.Bước 1. Đăng ký Nstbrowser và lấy khóa API
Truy cập Nstbrowser để đăng ký tài khoản của bạn và lấy khóa API để tích hợp Browserless. Khóa này sẽ được sử dụng để kết nối với cụm trình duyệt không đầu dựa trên đám mây của Nstbrowser.
Bước 2. Cài đặt Playwright
npm install playwright
Bước 3. Cấu hình Playwright để kết nối với Browserless
Trong dự án Playwright, hãy sử dụng phương thức connect
được cung cấp bởi Playwright để cấu hình nó để kết nối với ví dụ Browserless dựa trên đám mây của Nstbrowser.
Tạo hoặc sửa đổi tập lệnh kiểm tra Playwright và thêm URL kết nối WebSocket Browserless và khóa API vào tập lệnh.
const { chromium } = require('playwright');
// Sử dụng URL WebSocket và khóa API được cung cấp bởi Browserless
(async () => {
const browser = await chromium.connect({
wsEndpoint: 'wss://your-nstbrowserless-api-url?token=your-api-key'
});
const context = await browser.newContext();
const page = await context.newPage();
// Mở trang web bạn muốn kiểm tra
await page.goto('https://your-application-url.com');
// Thực hiện các hành động trên trang, chẳng hạn như nhấp, nhập, v.v.
await page.click('button#submit');
// Đóng trình duyệt
await browser.close();
})();
Bước 4. Chạy các bài kiểm tra không đầu của Playwright
Chạy tập lệnh Playwright của bạn trong terminal và đảm bảo nó được kết nối với ví dụ Browserless của Nstbrowser:
node your-playwright-script.js
Bước 5. Kiểm tra đồng thời và tối ưu hóa tài nguyên
Playwright hỗ trợ thực thi đồng thời các bài kiểm tra trong nhiều ví dụ trình duyệt. Với cơ sở hạ tầng đám mây Browserless của Nstbrowser, bạn có thể chạy nhiều phiên Playwright đồng thời để tự động hóa kiểm tra hiệu quả:
const { chromium } = require('playwright');
(async () => {
// Kết nối với Browserless và sử dụng nhiều ví dụ trình duyệt để kiểm tra đồng thời
const browser = await chromium.connect({
wsEndpoint: 'wss://your-nstbrowserless-api-url?token=your-api-key'
});
// Tạo nhiều ngữ cảnh trình duyệt để song song hóa kiểm tra
const context1 = await browser.newContext();
const context2 = await browser.newContext();
const page1 = await context1.newPage();
const page2 = await context2.newPage();
await page1.goto('https://example1.com');
await page2.goto('https://example2.com');
// Thực thi các hoạt động trang
await page1.click('#button1');
await page2.click('#button2');
// Đóng ví dụ trình duyệt
await browser.close();
})();
Kiểm tra trình duyệt không đầu là một cách nhanh hơn, đáng tin cậy hơn và hiệu quả hơn để kiểm tra các ứng dụng web trong trình duyệt.
Trong bài viết này, bạn có thể dễ dàng tìm hiểu:
Để đảm bảo gián đoạn kỹ thuật tối thiểu trong khi tối đa hóa ROI, các giải pháp không đầu là cách tốt nhất để vượt lên đối thủ cạnh tranh.
Bắt đầu sử dụng Browserless ngay bây giờ để giải quyết vấn đề!