PbottleRPA là nền tảng RPA + AI mã nguồn mở, hỗ trợ phát triển kịch bản tự động hóa bằng JavaScript và Python. Phần mềm hoạt động không xâm lấn, tương thích cả ứng dụng web và desktop, đồng thời đảm bảo độ chính xác tuyệt đối trong quy trình xử lý nghiệp vụ.
Bắt đầu nhanh: Kịch bản 3 dòng đầu tiên
Dưới đây là ví dụ tối giản để thực hiện tìm kiếm trên trang chủ Baidu — chỉ với ba lệnh rõ ràng:
const rpa = require('./pbottleRPA');
rpa.navigateTo('https://www.baidu.com/');
rpa.pasteText('PbottleRPA – Tự động hóa thông minh');
rpa.pressKey('Enter');
- Nhập thư viện: Dòng đầu tiên tải module chính của PbottleRPA vào môi trường Node.js.
- Điều hướng đến URL: Hàm
navigateTo()khởi chạy trình duyệt (nếu chưa mở) và tải trang đích. - Dán văn bản & gửi lệnh:
pasteText()chèn nội dung vào ô nhập hiện tại;pressKey()mô phỏng thao tác nhấn phím hệ thống.
Các cấu trúc điều khiển cốt lõi
Vòng lặp linh hoạt
Sử dụng for để lặp cố định hoặc while để chờ điều kiện động:
// Lặp 8 lần, mỗi lần mở một tab mới
for (let idx = 0; idx < 8; idx++) {
rpa.navigateTo(`https://example.com/page/${idx}`);
rpa.sleep(1.2); // tạm dừng 1.2 giây
}
// Chờ xuất hiện biểu tượng "đã tải xong" trên màn hình
let loaded = false;
while (!loaded) {
loaded = rpa.waitForImage('./assets/loaded-icon.png', { timeout: 15000 });
if (!loaded) rpa.log('Chưa sẵn sàng — đang kiểm tra lại...');
}
Rẽ nhánh theo điều kiện
Hàm if/else và switch giúp kịch bản phản ứng thông minh với trạng thái thực tế:
const score = Math.floor(Math.random() * 100);
if (score >= 90) {
rpa.log(`Xuất sắc: ${score}/100`);
} else if (score >= 60) {
rpa.log(`Đạt yêu cầu: ${score}/100`);
} else {
rpa.log(`Cần cải thiện: ${score}/100`);
}
// Xử lý hành động dựa trên loại giao diện
const uiMode = rpa.detectUIType();
switch (uiMode) {
case 'web':
rpa.clickElement('#submit-btn');
break;
case 'desktop':
rpa.moveAndClick(820, 450);
break;
default:
rpa.log('Giao diện không xác định');
}
Chờ có điều kiện
Các hàm chờ thông minh giúp kịch bản không "cứng nhắc", mà thích nghi với tốc độ thực tế của hệ thống:
rpa.sleep(2.5): Chờ cố định 2.5 giây.rpa.waitForImage(path, options): Chờ xuất hiện ảnh chụp màn hình (với timeout và ngưỡng nhận diện).rpa.waitForFile(filepath, callback): Chờ file được tạo thành công tại đường dẫn cụ thể.
Xử lý dữ liệu qua clipboard và hệ thống tập tin
PbottleRPA cung cấp API đồng bộ giữa clipboard và hệ thống tập tin, phù hợp cho các tác vụ như sao chép đường dẫn, dán nội dung đa phương tiện hoặc kích hoạt ứng dụng từ file.
// Ghi văn bản vào clipboard
rpa.copyToClipboard('https://docs.pbottle.dev/api-reference');
// Đọc nội dung hiện tại (text hoặc path)
const clipboardData = rpa.readClipboard();
console.log('Dữ liệu trong clipboard:', clipboardData);
// Sao chép đường dẫn file → dán vào ứng dụng khác
const logoPath = require('path').join(__dirname, 'assets/logo.png');
rpa.copyFilePath(logoPath);
rpa.pasteText(); // dán đường dẫn
// Mở file ảnh bằng chương trình mặc định
rpa.openFile(logoPath);
// Tải file từ URL về thư mục cục bộ
rpa.downloadFromUrl(
'https://example.com/report.pdf',
'./exports/monthly-report.pdf'
);
Tương tác với bàn phím và chuột
Các hàm mô phỏng hành vi người dùng ở mức thấp giúp kiểm soát toàn bộ giao diện — kể cả những ứng dụng không hỗ trợ API điều khiển trực tiếp.
Thao tác bàn phím
rpa.keyDown('Shift'); // giữ phím Shift
rpa.keyTap('A'); // gõ chữ A hoa
rpa.keyUp('Shift'); // nhả phím Shift
rpa.keyTap('Ctrl+V'); // dán nội dung
rpa.keyTap('F5'); // làm mới trang
Thao tác chuột
// Di chuyển & tương tác chính xác theo toạ độ màn hình
rpa.moveTo(720, 380);
rpa.leftClick();
rpa.rightClick();
// Kéo thả từ vị trí hiện tại đến toạ độ đích
rpa.dragStart();
rpa.moveTo(1050, 620);
rpa.dragEnd();
// Cuộn thanh cuộn (giá trị âm = cuộn xuống)
rpa.scrollWheel(-480);
// Nhấp đúp tại vị trí hiện tại
rpa.doubleClick();
Mỗi hàm đều hỗ trợ tùy chọn độ trễ, độ chính xác và xử lý ngoại lệ — đảm bảo tính ổn định khi vận hành trong môi trường sản xuất.