Đây là những dự án tôi đã thực hiện cho các khách hàng cụ thể, trong đó phần mềm làm những việc con người thường làm trong trình duyệt: đăng nhập website, thực hiện các bước, điền biểu mẫu, gửi tin nhắn và thu thập dữ liệu từ các trang. Dữ liệu có thể đến từ bảng Excel, tài liệu Word hoặc hệ thống quản lý doanh nghiệp và được chuyển đến nhiều nơi khác nhau; điểm chung là các giải pháp làm việc với ứng dụng web của bên thứ ba không có API và có thể thay đổi mà không báo trước. Tôi thực hiện các công việc này trong dịch vụ phát triển chương trình Windows và ứng dụng dịch vụ chạy nền, cũng như phát triển tiện ích Office khi giải pháp dựa trên Office.
Robot điền biểu mẫu web được điều khiển từ hệ thống quản lý doanh nghiệp
Thực hiện trong quý IV năm 2025.
Giải pháp đã triển khai
Chương trình Windows chạy nền, điều khiển trình duyệt thay người vận hành: mở các website được chỉ định, thực hiện các bước và điền biểu mẫu bằng dữ liệu đã có trong hệ thống quản lý doanh nghiệp CacaTajka. Kết quả mỗi lượt xử lý được gửi lại hệ thống, nên hồ sơ theo dõi luôn cho biết công việc đã tiến đến đâu.
Điểm khác biệt không nằm ở khả năng nhấp vào trang — công cụ tự động hóa nào cũng làm được — mà ở nơi lưu quy trình. Các bước không được viết trong chương trình mà được quản lý dưới dạng dữ liệu trong hệ thống doanh nghiệp, bằng các bảng thông thường có thể chỉnh sửa trong trình duyệt.
Vì sao quy trình là dữ liệu thay vì mã nguồn
Website của bên thứ ba thay đổi mà không báo trước: một trường bị chuyển vị trí, một bước được thêm vào, nội dung nút thay đổi. Với robot thông thường, mỗi thay đổi nhỏ như vậy đều đòi hỏi sửa chương trình, phát hành phiên bản mới và cài đặt lại cho khách hàng.
Ở đây, chỉ cần sửa một dòng trong bảng. Ngay cả cách tìm trường trên trang cũng được lưu trong bảng, cùng giá trị cần nhập, nên thay đổi trên website được xử lý bằng cách sửa dữ liệu. Chương trình vẫn giữ nguyên. Điều này cũng áp dụng khi bổ sung website mới hoặc loại công việc mới — thêm quy trình mới, không phải chương trình mới.
Mỗi bước còn có điều kiện thực hiện, nên một quy trình có thể bao quát cả các trường hợp phân nhánh mà không cần viết riêng từng biến thể. Bước cũng có thể được đánh dấu áp dụng từ phiên bản chương trình nào, cho phép chuẩn bị thay đổi trước mà không ảnh hưởng đến các bản cài đặt chưa cập nhật.
Khách hàng nhận được gì
- Công việc tự vận hành – nhiệm vụ được xử lý tự động theo chu kỳ, kể cả ban đêm.
- Thay đổi không cần lập trình viên – khi website thay đổi, người dùng có quyền sửa bước trong bảng và công việc tiếp tục.
- Một hệ thống thay cho ba – tiếp nhận dữ liệu, theo dõi và xử lý được kết nối; không phải nhập lại dữ liệu.
- Dấu vết của từng lượt xử lý – ảnh chụp màn hình, nhật ký hoạt động và hồ sơ ghi rõ thay đổi gì, khi nào.
- Nhiều chương trình trên nhiều máy tính – mỗi bản cài đặt chỉ nhận loại công việc được phân công, giúp phân chia khối lượng xử lý.
Khi có sự cố
Tự động hóa làm việc với website của bên thứ ba đôi lúc gặp tình huống không lường trước. Vì vậy, chương trình được thiết kế để có nhiều cách xử lý khi điều đó xảy ra.
Người vận hành có các nút bắt đầu, tạm dừng và dừng; có thể được yêu cầu bổ sung thủ công thông tin còn thiếu rồi tiếp tục từ vị trí cũ. Cách xử lý lỗi có thể lựa chọn: chấm dứt, tạm dừng để kiểm tra hoặc tiếp tục và ghi nhật ký. Tại mỗi điểm đáng ngờ đều có ảnh chụp màn hình để sau đó xem chính xác website đã hiển thị gì.
Giới hạn của giải pháp
Chương trình không quyết định thay con người và không vượt qua cơ chế bảo vệ của các website mà nó làm việc cùng — nó thực hiện những gì người vận hành có thể tự làm, nhưng không cần nhập lại dữ liệu hay ngồi chờ. Những bước kiểm tra cần đánh giá của con người vẫn do người vận hành thực hiện; chương trình đưa chúng ra để xử lý thay vì bỏ qua.
Giải pháp này được dùng ở đâu
Ở mọi nơi hằng ngày phải điền cùng một biểu mẫu của bên thứ ba bằng dữ liệu đã có trong hồ sơ: đăng ký và gửi yêu cầu trên cổng thông tin không có API, tra cứu sổ đăng ký, kiểm tra trạng thái, chuyển lệnh công việc từ hệ thống này sang hệ thống khác.
Đây cũng là ví dụ rõ nhất về vai trò của CacaTajka: hệ thống lưu dữ liệu, quy tắc và hồ sơ theo dõi, còn chương trình được cài đặt chỉ là cánh tay thực thi.
Các phiên bản công nghệ
Phiên bản viết bằng VB.NET đã được bàn giao cho khách hàng và đang được sử dụng.
Một phiên bản C# cũng đã được phát triển. Vì toàn bộ quy trình nằm trong các bảng của hệ thống doanh nghiệp, cả hai phiên bản sử dụng cùng dữ liệu — có thể chọn phiên bản phù hợp hơn với công nghệ khách hàng đang sử dụng và bảo trì.
Dự kiến có thêm phiên bản ứng dụng Electron bằng JavaScript, thực hiện cùng công việc trên các hệ điều hành ngoài Windows. Việc tách hệ thống lưu quy trình khỏi chương trình thực thi cho phép điều đó: thay thành phần thực thi, không thay quy tắc hoạt động.
Công nghệ sử dụng
Chương trình được phát triển bằng VB.NET và C#, với giao diện WinForms, điều khiển trình duyệt Microsoft Edge qua Selenium WebDriver và kết nối với hệ thống doanh nghiệp qua REST API. Hệ thống doanh nghiệp sử dụng PHP và MySQL, cùng các bảng Tabulator.js để chỉnh sửa quy trình. Phần mềm được bàn giao kèm bộ cài đặt Windows; phiên bản Electron bằng TypeScript cũng đang được chuẩn bị.
Gửi SMS bằng cách điều khiển ứng dụng web của bên thứ ba
Thực hiện trong quý III năm 2024.

Đây là một dự án đã thực hiện — giải pháp được xây dựng cho một khách hàng và được mô tả theo quá trình hình thành. Nếu bạn cần ứng dụng có sẵn để gửi SMS từ Excel, giải pháp đó hiện là sản phẩm riêng: gửi SMS từ Excel.
Yêu cầu
Khách hàng có công việc lặp lại mỗi tháng: gửi riêng từng tin nhắn trong danh sách vài trăm tin từ bảng tính, đồng thời ghi nhận những tin đã gửi. Dịch vụ gửi SMS qua internet không phù hợp — tin nhắn phải được gửi từ số điện thoại, thiết bị và gói cước của chính họ.
Điều đó chỉ còn một hướng: ứng dụng thực hiện những thao tác người dùng thường làm thủ công trong trình duyệt, nhưng không cần người thao tác.
Vì sao khó hơn vẻ bề ngoài
Chương trình điều khiển ứng dụng web của bên thứ ba không có một giao kèo kỹ thuật với ứng dụng đó. Không có API bảo đảm ngày mai vẫn hoạt động như hôm nay, không có thông báo lỗi có thể dựa vào, cũng không có cam kết ô nhập văn bản và nút gửi sẽ giữ nguyên vị trí. Những gì chương trình có chỉ là màn hình giống màn hình người dùng nhìn thấy.
Từ đó xuất hiện ba vấn đề chính:
- Chờ đợi. Ứng dụng web không thông báo khi đã sẵn sàng. Chương trình bắt đầu quá sớm sẽ nhập vào trường chưa xuất hiện, còn chương trình chờ cố định năm giây cho mỗi tin sẽ mất nửa giờ cho danh sách vốn chỉ cần mười phút.
- Gián đoạn giữa chừng. Nếu mất kết nối ở tin nhắn thứ 150, không thể bỏ toàn bộ công việc hay bắt đầu lại từ đầu. Vì vậy, trạng thái đã gửi được ghi trực tiếp vào từng dòng của bảng tính ngay lúc gửi, thay vì chỉ lưu trong bộ nhớ chương trình — khi khởi động lại, công việc tiếp tục từ nơi đã dừng.
- Ghép nối thiết bị. Phiên bản nhắn tin trên web chỉ hoạt động khi điện thoại được ghép nối với máy tính, và bước ghép nối cần con người. Vì vậy, bước này được chủ động giao cho người dùng, còn mọi bước khác chạy tự động.
Giải pháp
Ứng dụng máy tính Windows đưa trình duyệt qua các bước người dùng thường thực hiện thủ công, đồng thời dùng bảng tính làm nguồn đầu vào và hồ sơ theo dõi. Mọi thứ có thể thay đổi trong ứng dụng web bên thứ ba — tên trường, nút, thời gian chờ — được chuyển ra phần cài đặt, nên thay đổi phía website chỉ cần sửa một thiết lập, không phải phát hành phiên bản chương trình mới.
Trước lần gửi đầu tiên, ứng dụng kiểm tra môi trường đã sẵn sàng chưa và báo rõ điều còn thiếu — bởi lỗi được phát hiện trước khi bắt đầu hữu ích hơn nhiều so với lỗi xuất hiện ở dòng thứ 150.
Công nghệ sử dụng
- Ngôn ngữ lập trình C# (programiranje.co.rs): ứng dụng máy tính Windows.
- Tự động hóa trình duyệt: điều khiển phiên bản nhắn tin trên web qua những bước người dùng thường thực hiện thủ công.
- Bảng tính Excel: dữ liệu tin nhắn đầu vào và hồ sơ tin đã gửi.
Kết quả khách hàng nhận được
Công việc từng chiếm cả một buổi chiều nay chỉ mất thời gian thực sự cần để gửi tin; hồ sơ gửi gì, vào lúc nào được tạo tự động trong quá trình làm việc, không phải ghi lại sau đó. Giải pháp đã được hoàn thiện thành sản phẩm có sẵn, có thể mua tại trang gửi SMS từ Excel.
Trích xuất dữ liệu từ trang web vào tài liệu Word
Thực hiện trong quý IV năm 2021.
Vấn đề
Khách hàng cần một tập lệnh VB nhúng trong tài liệu Word để lấy các dữ liệu khác nhau từ trang web được chỉ định và điền vào các trường cụ thể trong tài liệu. Phần nội dung cần lấy được xác định bằng thẻ HTML bắt đầu và kết thúc bao quanh dữ liệu. Ban đầu công việc được xem là tương đối đơn giản, nhưng yêu cầu tập lệnh hoạt động cả dưới dạng tiện ích đã làm tăng phạm vi và độ phức tạp.
Giải pháp
Tập lệnh được xây dựng để trích xuất nội dung web và tự điền tài liệu Word:
- trích xuất dữ liệu linh hoạt: lấy bất kỳ văn bản nào nằm giữa các thẻ HTML bắt đầu và kết thúc được chỉ định;
- trích xuất theo URL: quy trình bắt đầu bằng việc cung cấp địa chỉ trang web;
- ghi trực tiếp vào Word: dữ liệu lấy được được đưa vào các trường đã định trong tài liệu;
- phiên bản tiện ích: tập lệnh được mở rộng để hoạt động như một tiện ích trong Word.
Công nghệ sử dụng
- Tập lệnh VB: tự động hóa tác vụ trong Microsoft Office.
- HTML: các thẻ xác định nội dung cần trích xuất.
- Microsoft Word: tài liệu nhận dữ liệu.
Kết quả
Dữ liệu từ trang web tự chuyển vào tài liệu Word mà không cần sao chép; chỉ cần thay các thẻ, cùng tập lệnh có thể lấy những phần khác của trang.
Công cụ thu thập và phân tích kết quả thể thao
Thực hiện trong quý III năm 2021.
Vấn đề
Khách hàng cần thống kê kết quả của nhiều môn — bóng đá, bóng rổ NBA và khúc côn cầu NHL — không chỉ danh sách trận đấu mà còn các chuỗi dài nhất: chẳng hạn một đội có bao nhiêu trận liên tiếp dưới 2,5 bàn, hoặc bao nhiêu trận liên tiếp có trên 59,5 điểm trong hiệp đầu. Với bóng đá, cần dữ liệu của khoảng ba mươi giải trong mười mùa gần nhất; với bóng rổ và khúc côn cầu, cần năm mùa gần nhất, cùng việc cập nhật thường xuyên mùa hiện tại.
Dữ liệu này không được cung cấp qua API. Chúng nằm trên các website kết quả công khai, chia theo giải đấu, mùa giải và nhiều trang, nên cần thu thập hàng nghìn trận cùng kết quả từng hiệp: hai hiệp của bóng đá, bốn hiệp của bóng rổ và ba hiệp của khúc côn cầu.
Giải pháp
Một bộ chương trình Windows được xây dựng để phối hợp thực hiện công việc, với một cặp chương trình riêng cho từng môn:
- công cụ thu thập kết quả: duyệt các trang kết quả theo giải và mùa qua trình duyệt, rồi lưu tất cả trận đấu vào tệp kết quả;
- tách dữ liệu lưu trữ và mùa hiện tại: cùng công cụ sử dụng hai danh sách địa chỉ — một cho các mùa trước, một cho mùa hiện tại — để chỉ thu thập kho lưu trữ một lần và cập nhật mùa hiện tại khi cần;
- bỏ qua trang đã xử lý: có thể bỏ qua địa chỉ đã có trong kết quả, giúp tiếp tục sau gián đoạn mà không tải lại;
- dừng có kiểm soát: nút dừng chờ xử lý xong trang hiện tại, để có thể tiếp tục an toàn về sau;
- công cụ phân tích: các chương trình riêng hợp nhất dữ liệu lưu trữ với kết quả hiện tại và tính chuỗi dài nhất cho từng đội, từng giải theo quy tắc được chỉ định;
- ngưỡng tùy chỉnh: người dùng đặt số trận tối thiểu để một chuỗi được coi là kỷ lục; kết quả hiển thị ngay trong chương trình;
- hướng dẫn sử dụng: khách hàng nhận được tài liệu mô tả cách thiết lập và thứ tự sử dụng các chương trình.
Công nghệ sử dụng
- Ngôn ngữ lập trình C# (programiranje.co.rs) và .NET Framework: toàn bộ công cụ thu thập và phân tích.
- Windows Forms: giao diện người dùng.
- Selenium WebDriver và Microsoft Edge: điều khiển trình duyệt khi thu thập kết quả.
- Tệp văn bản: danh sách địa chỉ, kết quả thu thập và quy tắc phân tích.
Kết quả
Khách hàng tự thu thập dữ liệu lưu trữ và kết quả hiện tại của ba môn thể thao cùng khoảng ba mươi giải bóng đá; chỉ cần chạy công cụ phân tích một lần để nhận các chuỗi dài nhất theo quy tắc mình quan tâm.
Robot cho trình duyệt Edge được điều khiển từ Excel
Thực hiện trong quý III năm 2021.
Vấn đề
Khách hàng đã có hệ thống tự động hóa bằng robot trong trình duyệt, cần cải tiến đáng kể robot thứ nhất và xây dựng robot thứ hai hoàn toàn mới. Việc tự động hóa phải được điều khiển trực tiếp từ tiện ích Excel, đồng thời cho phép thay đổi tốc độ và khoảng nghỉ giữa các tác vụ khi đang chạy. Thách thức lớn nhất là lấy dữ liệu Excel một cách đáng tin cậy và chuyển qua các biểu mẫu gửi yêu cầu trên website. Vì không thể truy cập cơ sở dữ liệu khách hàng để kiểm thử, các robot phải được kiểm tra mà không dùng hệ thống thật.
Giải pháp
- cải tiến robot thứ nhất: chỉnh sửa theo yêu cầu và bổ sung khả năng mới;
- robot thứ hai mới: phát triển với các chức năng riêng để hoạt động cùng robot đầu tiên;
- điều khiển từ Excel: dữ liệu bảng tính được lấy tự động để điền biểu mẫu trên website;
- điều chỉnh khi đang chạy: biểu tượng bánh răng cho phép thay đổi tốc độ thực hiện và khoảng nghỉ giữa các tác vụ theo thời gian thực;
- môi trường kiểm thử: tạo một trang tạm mô phỏng nền tảng thật để kiểm tra sát thực tế.
Công nghệ sử dụng
- Ngôn ngữ lập trình VB.NET: nền tảng của hệ thống robot tự động hóa.
- Selenium: điều khiển trình duyệt Edge.
- Microsoft Excel: nguồn dữ liệu chính cho các robot.
Kết quả
Khách hàng điều khiển hai robot từ Excel, điều chỉnh tốc độ mà không gián đoạn công việc; cả hai đã được kiểm thử trong môi trường mô phỏng sát website thật.
Tiện ích VSTO tự động hóa thao tác trên website
Thực hiện trong quý III năm 2021.
Vấn đề
Khách hàng có một chuỗi thao tác web cần tự động hóa: đăng nhập website, xử lý bảng HTML, nhấp nút, tải tệp Excel, chuyển sang website khác, điền và gửi biểu mẫu. Khách hàng yêu cầu một tiện ích VSTO viết bằng VB.NET để thực hiện công việc đó thay mình.
Giải pháp
Tiện ích được xây dựng để đơn giản hóa quy trình trên web và giảm thao tác thủ công:
- tự động hóa công việc trên website: đăng nhập, xử lý dữ liệu bảng, tải tệp và điền biểu mẫu;
- điều khiển các thành phần trên trang: điền dữ liệu và gửi biểu mẫu trên các website đích;
- tiện ích trong môi trường Office, cho phép bắt đầu công việc từ ứng dụng người dùng đang sử dụng.
Công nghệ sử dụng
- VSTO (Visual Studio Tools for Office): nền tảng phát triển tiện ích trong Microsoft Office.
- VB.NET: ngôn ngữ viết tiện ích.
- Selenium: điều khiển các thành phần trên trang tại website đích.
Kết quả
Chuỗi thao tác trên nhiều website, từ đăng nhập đến gửi biểu mẫu, được khởi chạy từ Office và thực hiện không cần nhấp chuột thủ công.
Công cụ thu thập dữ liệu từ hai cấp trang
Thực hiện trong quý III năm 2021.
Vấn đề
Khách hàng cần công cụ thu thập thông tin doanh nghiệp từ chức năng tìm kiếm trên một website. Công cụ phải thực hiện tìm kiếm với các tham số người dùng chỉ định — địa điểm xuất phát, địa điểm đích và thành phố — lấy danh sách kết quả, rồi mở trang của từng doanh nghiệp để thu thập thông tin liên hệ và các dữ liệu khác.
Giải pháp
Công cụ được xây dựng để thu thập dữ liệu chính xác và hiệu quả từ hai cấp trang:
- hai cấp trang: trích xuất dữ liệu từ cả trang kết quả tìm kiếm lẫn từng trang chi tiết;
- tham số tìm kiếm: người dùng chỉ định địa điểm và thành phố để nhận danh sách phù hợp;
- dữ liệu chi tiết: ngoài danh sách, công cụ mở từng liên kết để lấy thông tin liên hệ và dữ liệu khác;
- xuất dữ liệu: sắp xếp toàn bộ dữ liệu vào các tệp Excel và CSV rõ ràng, sẵn sàng cho phân tích.
Công nghệ sử dụng
- Công cụ thu thập dữ liệu web: trích xuất chính xác dữ liệu từ các trang.
- Excel và CSV: định dạng xuất dữ liệu.
Kết quả
Với mỗi tìm kiếm được chỉ định, khách hàng nhận được bảng doanh nghiệp đầy đủ thông tin liên hệ mà không phải mở từng trang thủ công; công việc được hoàn thành đúng hạn.
Nhận xét của khách hàng
★★★★★5/5“Dejan thật tuyệt vời. Anh ấy hoàn thành mọi công việc đúng hạn, rất kiên nhẫn và kỹ lưỡng trong trao đổi cũng như tài liệu. Cảm ơn Dejan!”
Bạn cần giải pháp tự động hóa tương tự?
Phạm vi công việc, cách xác định giá và quy trình thực hiện được trình bày tại trang phát triển chương trình Windows và ứng dụng dịch vụ chạy nền; việc kết nối với hệ thống bên thứ ba có API được mô tả tại trang tích hợp API. Xem ứng dụng nhắn tin có sẵn tại gửi SMS từ Excel, và những dự án khác trong mục chương trình Windows tự động hóa.
Để Lại Bình Luận