Học Selenium cho 1 cuộc sống Automation

Intro

Mình mới viết lại 1 thuật toán chơi cờ vua, muốn thử xem hệ số Elo của nó là bao nhiêu trên chess.com, việc tự động này có lẽ chỉ làm được với Selenium, nên mình tìm hiểu nó.

Setup

Mình chọn Java làm ngôn ngữ để chạy, nó hỗ trợ đủ kiểu, có lẽ Python dùng đơn giản nhất. Cài đặt cũng không có gì, tải selenium libs về, cài chromemium, là được.

Addons Seleniums IDE trên firefox rất mạnh, hỗ trợ cả việc export ra các ngôn ngữ lập trình.

Automating Actions

Thât ra kiến thức không có nhiều, nên ban có thể đọc code và tự hiểu, hết sức đơn giản nhưng ứng dụng khá mênh mông.

Find element on a Web Page

Trong các cácnh tìm bằng By: LinkTẽt, Id, Name thì Xpath là hiệu quả nhất, dùng Firefox làm trình duyệt để chạy selenium sẽ cài được Firebug, trong đó có mục firepath chứa đường dẫn vị trí của các phần tử.

Đôi lúc chúng ta muốn chọn 1 phần tử nào đó nhiều lần, ví dụ ở ô nhập mật khẩu và ô nhập lại mật khẩu, ta muốn điền cả 2 ô cùng 1 lúc, đó là lúc Css Selector phát huy sức mạnh:

Với dropdown-menu, chúng ta cần dùng select để tạo vùng chọn rồi làm việc trên vùng đó, hãy tưởng tượng select nó sẽ click vào 1 phần tử rồi mở lên 1 cửa sổ, sau đó nó làm việc trên vùng của cửa sổ đấy:

Như vậy, Xpath dựa vào DOM, CssSelector dựa vào HTML Tag.

Enhancing Test Scripts

Tối ưu hóa lại quá trình, tạo 1 lớp chuyên đề kết nối driver khi cần thiết.

Định nghĩa các WebElement để tiện chỉnh sửa sau này.

Xây dựng thuật toán khi chọn radiobutton và checkbox

Testing Frameworks

Dùng Junit để viết test với các anotation giúp tự động hóa việc kiểm thử.

TestNG dùng cũng tương tự Junit nhưng mạnh hơn, hỗ trợ XML cho phép chạy nhiều test, quản lý nhiều test cùng lúc.

Data Driven Framework

Một cách đọc file CSV cơ bản để ghi dữ liệu, giả sử bạn cần tạo 1000 tài khoản với các trường khác nhau: email, password, username => CSV

Anotation @parameter trong Junit cực mạnh để chạy nhiều test, ví dụ dưới đây nó sẽ đọc từng dòng trong file CSV rồi cho vào contructor:

Trong testNG, nó nó được gọi là @DataProvinder

Hoản toàn có thể mở nhiều tab và switch với driver trong selenium:

Trong chrome vẫn có thể copy được xpath với Devtools

Page Object Model

Một design pattern giúp mô hình hóa các page (home, navigation..), các thành phần (header, body, footer) của 1 trang web.

Selenium cũng hỗ trợ annotaion.

Cucumber

Framework này cho phép viết kịch bản mà ai cũng đọc được.

Sourcecode tại đây

Dưới đây là 1 automation đơn giản chơi cờ trên Chess.com:

Nhận xét

Bài đăng phổ biến từ blog này

Hiểu về Norm Regularization

Những thuật toán nền tảng trong lĩnh vực Trí tuệ nhân tạo (Artificial Intelligence I)