Để cài đặt các hàm này, tác giả import từ các gói thư viện của Selenium, AutoIT sẵn có và tùy biến cách tham số đầu vào link động theo kịch bản mà người dùng nhập vào. Dưới đây là một ví dụ nhỏ về q trình cài đặt.
Hình 3-6: Cài đặt một hàm AutoIT với ngôn ngữ C#
Ngoài các hàm được hỗ trợ sẵn từ các lớp và giao diện của Selenium và AutoIT, để giải quyết triệt để bài toán và hướng đến sự tiện lợi nhất cho người quản trị, đảm bảo người quản trị không cần vào vào từng đối tượng, chuột phải và xem nguồn trang thì tác giả đã cài đặt thêm một số phương thức sau đây:
Phương thức hỗ trợ ghi lại hành động bàn phím, chuột. Chức năng này
hỗ trợ người quản trị có thể record được các hành động tác động tới website. Ví dụ khi người dùng thực hiện hành động đăng nhập cần các bước sau:
- Bước 1: truy cập trang login.sendo.vn =>hệ thống ghi nhận actions là Chrome Open > Iweb_Open_URL với tham số là login.sendo.vn
- Bước 2: Tìm textbox có name là username => hệ thống ghi nhận action là Iweb_FindElement với tham số 1 là name (thuộc tính tìm kiếm) và tham số thứ 2 là username
- Bước 3: Nhập liệu vào ô textbox giá trị là username => hệ thống ghi nhận action là Iweb_sendText với tham số hungnk (giá trị người dùng gõ vào)
- Bước 4: Tìm textbox có name là password => hệ thống ghi nhận action là Iweb_FindElement với tham số 1 là name (thuộc tính tìm kiếm) và tham số thứ 2 là password
- Bước 5: Nhập liệu vào ô textbox giá trị là password => hệ thống ghi nhận action là Iweb_sendText với tham số hungnk (giá trị người dùng gõ vào) - Bước 6: Nhấn nút Đăng nhập => hệ thống ghi nhận action là
Iweb_FindElementByID tham số là btn_login và action Iweb_Click
Để cài đặt chức năng này thì tác giả sử dụng các hook được cung cấp bởi window. Với ngôn ngữ C# thì được cài đặt trong gói WinHooksNET với 3 lớp phổ biến là MouseHook, KeyboardHook, HotKeysModule. Ba lớp này hỗ trợ hầu hết các hành động bàn phím, chuột của người dùng.
Các phương thức điều kiện IF ELSE END
Trong trường hợp có những đối tượng xuất hiện trên màn hình với tất suất bất định, ví dụ như popup quảng cáo có khi xuất hiện có khi khơng (phụ thuộc vào chiến dịch quảng cáo). Để phòng trừ trường trường hợp này, tác giả hỗ trợ xây dựng phương thức điều kiện hỗ trợ người dùng. Trong trường hợp sử dụng câu lệnh điều kiện thì người dùng phải tuân thủ một số luật về cú pháp như
- Có câu lệnh IF bắt buộc phải có END
- Có câu lệnh ELSE bắt buộc phải có IF trước nó và có END sau nó.
- Hiện tại chưa áp dụng được các cấu trúc điều kiện lồng nhau (trong IF END có chứa IF END)
Phương thức vòng lặp LOOP END BREAK
Phương thức này hỗ trợ người dùng tìm kiếm những đối tượng ở tận cùng cuối ở danh sách thì người dùng sẽ cần phải làm các hành động lặp lại là sang trang mới => tìm kiếm => nếu thấy break.
Các phương thức liên quan hình ảnh
Trong lập trình giao diện web ln có những đối tượng khơng thể tìm được bằng phương pháp css selector thông thường. Hoặc đôi khi phương pháp định danh chính xác cũng khơng thể dùng được (do thuộc tính ID, class thay đổi). Khi đó người quản trị có thể sử dụng tìm kiếm đối tượng bằng hình ảnh. Một ví dụ khá phổ biến đó là khi người dùng chọn đăng ảnh sản phẩm. Nếu đăng ảnh qua đường dẫn thì sẽ dễ dàng tuy nhiên nhiều trang chỉ cho chọn ảnh từ bộ sưu tập có
sẵn hoặc từ máy tính cá nhân lên. Khi đó khơng thể tìm được đối tượng Open File của windowFileBrowser được mà chỉ có thể tìm qua hình ảnh.
3.2.4.1. Kiến trúc hệ thống
Với bộ thực thi thì kiến trúc được tách biệt 3 tầng như bên dưới đây:
Hình 3-7: Kiến trúc hệ thống phần tạo sửa hành động mẫu
Tầng Executer:
Là nơi nhận các lệnh điều khiển của Controller để gọi đến các hàm AutoIT hoặc selenium, Khi các lệnh thực thi sẽ trả về kết quảPass (Đạt) hay Fail (Không đạt) của từng bước.
Tầng Controller
Tầng này sẽ liên tục hỏi phía Server rằng có u cầu đăng sản phẩm mới hay khơng. Nếu có u cầu mới thì sẽđưa vào hàng đợi các yêu cầu để thực thi.
Tầng server và dữ liệu
Tầng này làm nhiệm vụ chờ yêu cầu đồng bộ từ phía người dùng cuối. Khi người dùng cuối nhấn nút đồng bộ một sản phẩm. Server sẽ kiểm tra sản phẩm đã
được đồng bộ hay chưa. Nếu chưa được đồng bộ Server sẽ truy vấn dữ liệu về sản phẩm và tập các hành động mẫu của phiên bản mới nhất của sàn mục tiêu để tạo ra các hành động mới và bước hành động mới như lưu đồ bên dưới.
Hình 3-8: Quy trình tạo hành động tác động lên sàn TMĐT
3.2.4.2 Biểu đồ Use case
Hình 3-9: Lược đồ use case của phần thực thi tựđộng
Trong trường hợp lý tưởng, người quản trị gần như không phải can thiệp gì mà hệ thống sẽ tự chạy tự động. Tuy nhiên trong trường hợp phát sinh lỗi, có thể do website cập nhật giao diện thì người quản trị có thể tạm dừng tiến trình chạy tự động, chỉnh sửa hành động mẫu nếu cần sau đó cho chương trình tiếp tục chạy.
3.2.4.3 Thiết kế cơ sở dữ liệu
a) Phân tích
Dựa vào yêu cầu chức năng của hệ thống, cơ sở dữ liệu cần lưu trữ thông tin của lượt đăng mới các hành động mới được nhân bản từ hành động mẫu kèm thơng tin sản phẩm mới. Các thực thể này có các thuộc tính như sau:
Thực thể lượt đăng: chứa thông tin về người đăng (end user), website, phiên bản, trạng thái lượt đăng.
Thực thể hành động mới: chứa thông tin về lượt đăng, website, phiên bản, hành động mẫu, các bước hành động mới.
Quan hệ giữa các thực thể
Hình 3-10: Lược đồ thực thể quan hệ của phần tạo thực thi hành động
Hình vẽ trên biểu thị mối quan hệ giữa các thực thể. Mỗi lượt đăng có thể có nhiều hành động mới. Mỗi hành động mới có một bộ nhiều bước hành động mới.
b) Thiết kế
Từ các phân tích về các thực thể và các liên kết thực thể nêu trên, có thể mơ tả qua các lược đồ quan hệ sau:
Lược đồ quan hệ SyncTime
SyncTime (sync_id, sync_name, website_id, version_id,username, status):
trong đó sync _id là khóa chính, sync_name là tên lượt đăng để gợi nhớ cho người quản trị, website_id là khóa ngồi xác định website trực thuộc, version_id là khóa ngồi xác định phiên bản hiện tại, username là tên username tạo website, status là trạng thái của phiên bản (actived, deactived).
Lược đồ quan hệ NewAction
NewAction (act_id, act _name, username, a_index, version_id, note, steps,
status): trong đó act_id là khóa chính, act_name là tên hành động, username là tên người dùng yêu cầu đồng bộ, a_idx là thứ tự hành động, version_id là khóa ngồi xác định phiên bản trực thuộc, steps là thông tin chi tiết các bước hành động mới, status là trạng thái của hành động (actived, deactived).
3.2.4.4 Thiết kế các API
Bảng dưới đây mô tả các chức năng của các API đã được xây dựng cho mô đun thực thi hành động tự động:
URI Phương
thức Tham số Trả về Ghi chú
api/v1/sync_
requests GET - requests_list
Trả về danh sách các yêu cầu đồng bộ mới
api/v1/new_a
ctions GET request_id
new_actions_ list Trả về danh sách hành động mới api/v1/issue_ report POST request_id, action_id, step_index
Thông báo việc thực thi hành động có lỗi tới server để sau này có thể kiểm tra lại