Automation testing rất phong phú trong nhiều lĩnh vực như: Management Testing: quản lý việc phân tích, kiểm tra giám sát quy trình sản xuất, vòng đời và chất lượng sản phẩm; Automated So
Trang 1TP HỒ CHÍ MINH, tháng 07 năm 2016
TRƯỜNG ĐẠI HỌC BÁCH KHOA
LÊ TRƯỜNG ANH TIẾN
NGHIÊN CỨU PHÁT TRIỂN PHẦN MỀM
TỰ ĐỘNG KIỂM ĐỊNH ỨNG DỤNG
Chuyên ngành: KỸ THUẬT VIỄN THÔNG
Mã số: 60520208
LUẬN VĂN THẠC SĨ
Trang 2Cán bộ chấm nhận xét 1: TS Lê Đăng Quang
2 TS Huỳnh Phú Minh Cường
3 TS Lê Đăng Quang
Trang 3NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: LÊ TRƯỜNG ANH TIẾN MSHV: 13461249
Ngày, tháng, năm sinh: 26/01/1980 Nơi sinh: TP.HCM
Chuyên ngành: Kỹ thuật Viễn thông Mã số: 60520208
I TÊN ĐỀ TÀI: Nghiên cứu phát triển phần mềm tự động kiểm định ứng dụng
II NHIỆM VỤ VÀ NỘI DUNG
- Xây dựng hệ thống automated software testing: xác định được các thành phần giao diện ứng dụng ghi vào script
- Xây dựng trình biên dịch có thể dịch được các lệnh cơ bản tương tác với ứng dụng
và lệnh điều kiện rẽ nhánh trong script đã lưu
- Ứng dụng thực tế vào việc đo thời gian quay số kết nối của phần mềm softfone đến tổng đài
III NGÀY GIAO NHIỆM VỤ: 06/7/2015
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 10/6/2016
V CÁN BỘ HƯỚNG DẪN : TS LƯU THANH TRÀ
Tp HCM, ngày 10 tháng 6 năm 2016
CÁN BỘ HƯỚNG DẪN
TS LƯU THANH TRÀ
CHỦ NHIỆM BỘ MÔN ĐÀO TẠO
TS HUỲNH PHÚ MINH CƯỜNG TRƯỞNG KHOA
TS ĐỖ HỒNG TUẤN
Trang 4Tôi xin chân thành bày tỏ lòng biết ơn sâu sắc đến thầy TS Lưu Thanh Trà đã trực tiếp hướng dẫn, tận tình chỉ bảo và tạo mọi điều kiện thuận lợi nhất, giúp đỡ tôi trong quá trình thực hiện Luận văn này
Chân thành cảm ơn quý thầy cô bộ môn Kỹ thuật Điện tử - Viễn thông Trường Đại học Bách khoa Tp Hồ Chí Minh đã hết lòng giảng dạy, truyền đạt kiến thức và giúp đỡ tôi trong suốt thời gian học tập tại trường
Chân thành cám ơn Phòng Đào tạo Sau đại học, Trường Đại học Bách khoa
Tp Hồ Chí Minh đã tạo điều kiện tốt cho tôi về trang thiết bị và tài liệu học tập trong suốt khóa học
Chân thành cám ơn các bạn học viên cao học và gia đình đã ủng hộ, giúp đỡ tôi trong học tập và thực hiện Luận văn này
Tp.HCM, ngày 10 tháng 6 năm 2016
KS Lê Trường Anh Tiến
Trang 5cao hiệu suất hoạt động, tiết kiệm nguồn lực thời gian, chi phí và con người được ưu tiên hàng đầu Do đó xuất hiện khái niệm automated testing, dùng để chỉ việc tự động hóa quy trình thao tác kiểm định, kiểm tra ứng dụng hoặc tự động hóa các quy trình lặp lại lãng phí nhiều thời gian
Automation testing rất phong phú trong nhiều lĩnh vực như: Management Testing: quản lý việc phân tích, kiểm tra giám sát quy trình sản xuất, vòng đời và chất lượng sản phẩm; Automated Software Testing: tự động kiểm tra, kiểm định theo quy trình được lập trình trước trên nhiều nền tảng khác nhau; Performing Testing: kiểm tra đánh giá tính ổn định, độ tin cậy và khả năng đáp ứng của hệ thống; Security Testing: kiểm tra, phát hiện lỗi và đánh giá khả năng bảo mật của hệ thống…
Đề tài nghiên cứu phát triển một hệ thống automated testing cơ bản, có thể bắt được các thành phần giao diện ứng dụng lưu vào file script Đồng thời xây dựng một trình biên dịch yêu cầu hiểu được nội dung cú pháp và các lệnh của ngôn ngữ script, có thể lập trình file script để thay đổi tương tác tùy theo đáp ứng trả về trên ứng dụng cần test Hệ thống được ứng dụng để tự động test đáp ứng thời gian quay số và kết nối của phần mềm softphone voice ip đến tổng đài Hệ thống chỉ sử dụng các thư viện có sẵn trong Net của Microsoft Mã nguồn của phần mềm sẽ được công khai để mọi người có thể sử dụng phát triển thêm hoặc dùng cho mục đích riêng của mình Nội dung của luận văn có 4 chương:
Chương 1: GIỚI THIỆU
Chương 2: LÝ THUYẾT TỔNG QUAN VÀ TÌNH HÌNH NGHIÊN CỨU
Chương 3: CẤU TRÚC GIẢI THUẬT HỆ THỐNG VÀ KẾT QUẢ THỰC HIỆN Chương 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trang 6operating efficiency, resource saving time, costs and people are top priorities Hence the concept of automated testing appears, refers to the process automation expertise
to manipulate and examine applications or automate repetitive processes to avoid wasting much time
Automation testing is very rich in many fields such as: Management Testing: management analysis and monitoring production processes, lifecycle and product quality; Automated Software Testing: automatic inspection, according to pre-programmed process on many different platforms; Performing Testing: test evaluated the stability, reliability and the ability of the system to meet; Security Testing: checking, error detection and assessment of the security of the system
This thesis research and develope an automated testing system basically can get the application interface components stored in script files At the same time build a compiler required to understand the content of the command syntax language and script, the script file can be programmed to change depending on the response interactions returned on the need to test applications The system is used to automatically test the response time of the dial and connect to software IP PBX softphone voice The system uses the library only available in Microsoft Net The source code of the software will be made public so that people can use to develop more for their own purposes
The content of the thesis has four chapters:
Chapter 1: INTRODUCTION
Chapter 2: THEORY AND OVERVIEW OF RESEARCH
Chapter 3: SYSTEM ALGORITHM STRUCTURE AND RESULTS OF IMPLEMENTATION
Chapter 4: CONCLUSIONS AND FUTURE
Trang 7sao chép kết quả trong bất cứ tài liệu hay bài báo nào đã công bố trước đây Luận Văn được thực hiện dưới sự hướng dẫn khoa học của thầy TS Lưu Thanh Trà
Các số liệu, các kết luận nghiên cứu được trình bày trong Luận Văn hoàn toàn trung thực Luận Văn có tham khảo và sử dụng các tài liệu được đăng tải trên các tạp chí, bài báo và trang web được đề cập trong phần tài liệu tham khảo
Tôi xin hoàn toàn chịu trách nhiệm với những lời cam đoan nói trên
Tp.HCM, ngày 10 tháng 06 năm 2016 Học viên thực hiện
Ký tên
Lê Trường Anh Tiến
Trang 8MỤC LỤC
NHIỆM VỤ LUẬN VĂN THẠC SĨ iii
LỜI CẢM ƠN iv
TÓM TẮT LUẬN VĂN v
ABSTRACT vi
LỜI CAM ĐOAN vii
MỤC LỤC 1
DANH MỤC HÌNH VẼ 5
DANH MỤC BẢNG BIỂU 7
DANH MỤC CÁC TỪ VIẾT TẮT 8
Chương 1 : Giới thiệu 9
1.1 Tổng quan 9
1.2 Mục đích nghiên cứu đề tài 10
1.2.1 Yêu cầu 10
1.2.2 Tính năng 11
1.2.3 Độ phức tạp 12
1.2.4 Mở rộng 12
1.2.5 Ứng dụng 12
1.3 Phạm vi nghiên cứu và phương pháp nghiên cứu 12
1.3.1 Phạm vi nghiên cứu 12
1.3.2 Phương pháp nghiên cứu 13
Chương 2 : Lý thuyết tổng quan và tình hình nghiên cứu 14
2.1 Giới thiệu công nghệ Automation trên Windows 14
Trang 92.1.1 Lịch sử 15
2.1.2 Động lực và mục tiêu 15
2.1.3 Kỹ thuật tổng quan 15
2.1.4 Các thành phần (Elements) 17
2.1.5 Cây element (Element Tree) 18
2.1.6 Loại điều khiển (Control Types) 19
2.1.7 Các kiểu điều khiển (Control Patterns) 21
2.1.8 Các đặc tính (Properties) 23
2.1.9 Sự kiện (Events) 26
2.1.10 Kiểu text (Text Pattern) 27
2.1.11 UI Automation cho kiểm thử tự động 27
2.2 Giới thiệu công nghệ Automation trên Web 28
2.2.1 Tự động hóa hay không? 28
2.2.2 Giới thiệu Selenium 29
2.2.3 Bộ công cụ Selenium 29
1 Selenium 2 (Selenium WebDriver) 29
2 Selenium 1 (Selenium RC hoặc Remote Control) 30
3 Selenium IDE 30
4 Selenium Grid 30
2.2.4 Hỗ trợ trình duyệt 30
2.2.5 Ứng dụng thực tế với Selenium WebDriver 31
1 Test case 31
2 Cách thực hiện 33
3 Kết quả 35
Trang 102.2.6 Ứng dụng thực tế với Selenium IDE 35
1 Test Case 35
2 Cách thực hiện 35
3 Kết quả 36
2.3 Giới thiệu và so sánh về các hệ thống testing trong nhiều lĩnh vực khác nhau trên thế giới hiện nay 37
2.3.1 HP Quick Test Professional (QTP) 38
2.3.2 Selenium 39
2.3.3 So sánh giữa QTP và Selenium 40
2.4 Giới thiệu trình biên dịch (compiler): 42
2.4.1 Giới thiệu 42
2.4.2 Ngôn ngữ và cú pháp 45
2.4.3 Ứng dụng trình biên dịch vào đề tài 49
Chương 3 : Cấu trúc giải thuật chương trình và kết quả thực hiện 52
3.1 Giới thiệu giao diện 52
3.1.1 Menu chính 52
3.1.2 Tab UI Elements 53
3.1.3 Tab Logs 57
3.1.4 Tab Code 58
3.1.5 Tab Options 59
3.2 Cấu trúc chương trình 60
3.2.1 Phần bắt UI Element 61
3.2.2 Phần trình biên dịch 65
1 Hàm RunApp 72
Trang 112 Hàm GetID: 72
3 Hàm PushID: 72
4 Hàm ShowID: 72
5 Hàm SetID: 73
6 Hàm WaitID: 73
3.3 Kết quả thực hiện 73
3.3.1 Tets ứng dụng calculator của Windows 73
3.3.2 Test ứng dụng Softphone 3CX 75
Chương 4 : Kết luận và hướng phát triển 78
4.1 Kết luận 78
4.1.1 Kết quả đạt được 78
4.1.2 Những vấn đề còn hạn chế 78
4.2 Hướng phát triển 79
PHỤ LỤC: CODE LẬP TRÌNH 80
1 Class Form1 80
2 Class AutomationExtension 85
3 Class Compiler 104
4 Class CRC32 123
5 Class DrawRectangle 126
TÀI LIỆU THAM KHẢO 128
Trang 12DANH MỤC HÌNH VẼ
Hình 2.1: Mô hình kỹ thuật tổng quan UIA 16
Hình 2.2: Mô tả một cửa sổ ứng dụng cơ bản và một số UI Element của nó 18
Hình 2.3: Mô hình cây UI Elements với gốc cây (root) là Desktop 19
Hình 2.4: Các properties của một UI Element thực tế, là một nút nhấn (button) của ứng dụng Calculator 25
Hình 2.5: Màn hình đăng nhập dùng Selenium WebDriver 32
Hình 2.6: Lấy các Element dùng Selenium WebDriver 32
Hình 2.7: Xác định Element trên trình duyệt 33
Hình 2.8: Add Selenium WebDriver vào ứng dụng 34
Hình 2.9: Kết quả thực tế dùng Selenium WebDriver 35
Hình 2.10: Kết quả thực tế dùng Selenium IDE 37
Hình 2.11: Hệ thống biên dịch mutipass 44
Hình 2.12: Front ends và back ends 45
Hình 2.13: Cấu trúc của biểu thức 47
Hình 3.1: Giao diện chương trình 52
Hình 3.2: Giao diện tab UI Elements 53
Hình 3.3: Cấu trúc cây Element của ứng dụng Calculator 54
Hình 3.4: Chuỗi ID xác định một UI Element 55
Hình 3.5: Menu hiển thị các lựa chọn tương tác cho một UI Element 56
Hình 3.6: Các Properties của một UI Element 57
Hình 3.7: Giao diện của tab Logs 57
Trang 13Hình 3.8: Giao diện tab Code 58
Hình 3.9: Giao diện tab Options 59
Hình 3.10: Tương quan giữa các Class 61
Hình 3.11: Ví dụ highlight nút số 9 của ứng dụng Calculator 62
Hình 3.12: Lựa chọn các giá trị Properties để xác định một UI Element 63
Hình 3.13: Sơ đồ khối của trình biên dịch 65
Hình 3.14: Test trên ứng dụng Calculator 74
Hình 3.15: Giao diện của ứng dụng softphone 3CX 76
Hình 3.16: Kết quả test trên ứng dụng softphone 3CX 77
Trang 14DANH MỤC BẢNG BIỂU
Bảng 2.1: Các thành phần của UIA 17
Bảng 2.2: Các loại điều khiển (Control Types) của UI Element 21
Bảng 2.3: Các kiểu điều khiển (Control Pattern) của UI Element 23
Bảng 2.4: Các Properties của một UI Element 25
Bảng 2.5: So sánh giữa HP QTP và Selenium 41
Trang 15DANH MỤC CÁC TỪ VIẾT TẮT
MSAA Microsoft Active Accessibility
IDE Integrated Development Environment
JSON Java Script Object Notation
Trang 16Chương 1: Giới thiệu
Chương 1 mục 1.1 giới thiệu tổng quan về khái niệm automated testing Mục 1.2 trình bày mục đích nghiên cứu của đề tài, các yêu cầu đặt ra, các tính năng đã đạt được, cũng như khả năng mở rộng trong tương lai Mục này có một số từ thuật ngữ liên quan được trình bày chi tiết trong chương 2
Kiểm tra yêu cầu việc đầu tư đáng kể tiền bạc và nguồn nhân lực Dùng công
cụ kiểm tra tự động có thể ghi nhận lại quá trình kiểm tra và chạy lại nếu có yêu cầu Một khi việc kiểm tra được tự động hóa, không cần có sự can thiệp của con người
Tại sao dùng test automation:
• Kiểm tra thủ công tốn thời gian, chi phí và nguồn lực
• Khó khăn để kiểm tra nhiều ứng dụng một lúc thủ công
• Tự động không yêu cầu sự can thiệp của con người, có thể chạy bất cứ lúc nào (chạy qua đêm chẳng hạn)
• Kiểm tra tự động tăng tốc độ kiểm tra ứng dụng, tăng phạm vi kiểm tra
• Kiểm tra thủ công có thể dẫn đến sự lặp lại nhàm chán và phát sinh lỗi
Các trường hợp có thể kiểm tra tự động:
• Các trường hợp kiểm tra có tính lặp lại
• Các trường hợp kiểm tra khó thực hiện thủ công hoặc rất chán ngắt cho con người
• Các trường hợp kiểm tra tiêu tốn quá nhiều thời gian
Các trường hợp không thích hợp cho việc kiểm tra tự động:
• Các công việc mới và chưa thực hiện thủ công ít nhất một lần
• Các công việc yêu cầu thay đổi thường xuyên
Trang 17Các lợi ích của việc kiểm tra tự động:
• Nhanh hơn kiểm tra thủ công rất nhiều lần
• Kết quả đáng tin cậy
• Kết quả đảm bảo tính nhất quán
• Tiết kiệm thời gian và tiền bạc
• Đảm bảo sự chính xác cao
• Không cần sự can thiệp của con người
• Nâng cao hiệu suất
• Các kịch bản kiểm tra có thể sử dụng lại
• Có thể kiểm tra một cách thường xuyên
1.2 Mục đích nghiên cứu đề tài
Có nhiều ứng dụng test automation hiện nay trên thị trường rất mạnh và nhiều tính năng phong phú Tuy nhiên, các phần mềm này có thu phí bản quyền hàng năm
và chi phí sử dụng rất đắt Mục đích nghiên cứu của đề tài là xây dựng ứng dụng test automation đơn giản nhưng hiệu quả Đáp ứng yêu cầu cơ bản của một hệ thống tự động kiểm định, kiểm tra nhưng phần mã nguồn mở, công khai cho mọi người Có thể dựa vào nghiên cứu và sử dụng mã nguồn này để từ đó phát triển thêm, tạo nên một hệ thống hoàn thiện sau này
1.2.1 Yêu cầu
Có nhiều loại test automation khác nhau trong nhiều lĩnh vực khác nhau Mục đích nghiên cứu của đề tài là xây dựng một hệ thống test automation trên ứng dụng Windows gồm 2 phần chính:
• Phần bắt các UI Element (User Interface Element) trên ứng dụng test một cách chính xác, kết hợp với một số lệnh để tương tác với Element này tạo thành một kịch bản (script) để tùy biến thực hiện nhiều việc khác nhau, kết hợp với lệnh điều kiện If tùy theo giá trị thực tế trả về như thế nào sẽ có hành động khác nhau phù hợp Script là ngôn ngữ được thể hiện với những câu lệnh đơn giản và lưu ở định dạng văn bản dễ đọc Ví dụ test automation trên web: tự động điền username, điền password và nhấn nút đăng nhập
Trang 18trên một website Tùy theo giá trị trả về là đăng nhập thành công hay thất bại ta sẽ có các bước tiếp theo khác nhau
• Phần biên dịch, đọc và phân tích các lệnh từ file script Trình biên dịch thực hiện chức năng phân tích từ vựng và phân tích cấu trúc ngữ pháp của từng dòng lệnh, từ đó chạy các dòng lệnh trong file scrip theo nội dung yêu cầu Đồng thời cũng có hệ thống logs ghi nhận lại các bước chạy thành công hoặc thất bại để người sử dụng kiểm tra và xử lý
• Xây dựng các UI Element theo cấu trúc cây phân nhánh với gốc là desktop
• Xây dựng được một trình biên dịch gồm có phần phân tích từ vựng, phân
tích cú pháp với cấu trúc lệnh rẽ nhánh có điều kiện If, kết hợp với một số
lệnh tương tác cơ bản với UI Element
• Có hệ thống logs để lưu lại quá trình biên dịch nhằm mục đích kiểm tra và xác định lỗi
Trang 191.2.3 Độ phức tạp
Để xây dựng một hệ thống test automation hoàn chỉnh, yêu cầu nhận diện, xác định và tương tác được tất cả các kiểu điều khiển (Control Pattern) của các thành phần UI Element như bảng 2.1
Phần trình biên dịch yêu cầu nhiều lệnh khác nhau để tương tác với mỗi UI Element khác nhau, cùng với nhiều lựa chọn và xuất kết quả báo cáo
Có một hệ thống báo cáo hoàn chỉnh, chi tiết để hỗ trợ người sử dụng
Mở rộng việc ứng dụng hệ thống test automation cho nhiều mục đích khác nhau như tự động hóa kiểm định sản phẩm phần mềm, tự động hóa các chương trình ứng dụng trên Windows, các ứng dụng hỗ trợ người dùng, …
1.3 Phạm vi nghiên cứu và phương pháp nghiên cứu
1.3.1 Phạm vi nghiên cứu
Giới hạn đối với các ứng dụng chạy trên môi trường Windows nền tảng WinForm, Dot Net và Windows Presentation Foundation (WPF)
Trang 20Giới hạn thao tác đối với các điều khiển Control Type dạng nút nhấn (Button)
và trường Edit box dạng text
Đối với trình biên dịch, xây dựng một số lệnh cơ bản để tương tác với ứng
dụng cần test như: RunApp, GetID, PushID, WaitID, SetID, ShowID và lệnh điều kiện
rẽ nhánh If
1.3.2 Phương pháp nghiên cứu
Dùng công cụ lập trình Visual C# trong bộ Microsoft Visual Studio 2015, chỉ
sử dụng các thư việc sẵn có của Microsoft Ứng dụng chạy yêu cầu máy tính cài Net Framework 4.0 trở lên (tất cả các máy sử dụng hệ điều hành Windows 7 trở đi đều được cài sẵn)
Đề tài được phát triển bởi tham khảo các tài liệu nghiên cứu, các sách kỹ thuật liên quan được giới thiệu trong phần tài liệu tham khảo; diễn đàn cho các nhà phát triển ứng dụng của công ty Microsoft
Trang 21Chương 2: Lý thuyết tổng quan và tình hình nghiên cứu
Trong lĩnh vực automated software testing có hai mảng lớn là kiểm định tự động các ứng dụng trên nền Windows và trên nền Web Chương 2 mục 2.1 trình bày chi tiết công nghệ User Interface Automation (UIA) của Microsoft trên nền Windows
mà đề tài nghiên cứu Tất cả các từ thuật ngữ viết tắt trong mục này được công ty Microsoft định nghĩa và sử dụng trong các tài liệu kỹ thuật của họ
Mục 2.2 trình bày hệ thống automation mã nguồn trên nền Web là Selenium cũng như một số ví dụ ứng dụng hệ thống này trong thực tế Mục 2.3 so sánh các đặc điểm, tính năng, ưu khuyết điểm giữa hai hệ thống automated testing rất nổi tiếng hiện nay, HP Quick Test Pro là hệ thống được thương mại hóa và Selenium là một hệ thống mã nguồn mở
Đối với một hệ thống automated testing, sau khi ghi nhận lại các thành phần giao diện của ứng dụng và các tương tác trên các thành phần này thành các dòng lệnh lưu vào một kịch bản dạng text đơn giản (file script), hệ thống cần phải có một trình biên dịch để dịch ngược lại các lệnh và thực thi các lệnh theo yêu cầu Do đó, mục 2.4.1 chương 2 giới thiệu thế nào là một trình biên dịch cơ bản, mục 2.4.2 trình bày cách ứng dụng trình biên dịch vào hệ thống automated testing mà đề tài đang xây dựng
2.1 Giới thiệu công nghệ Automation trên Windows
Công nghệ User Interface Automation (UIA) kế thừa MS Active Accessibility (MSAA) của Microsoft, cung cấp các truy cập có thể lập trình đến tất cả các thành phần giao diện người dùng (User Interface element – UI element) trên desktop, nhằm mục đích hỗ trợ người sử dụng (assistive) và tự động hóa kiểm tra (test automation)
Hỗ trợ các ứng dụng được viết trên nền WPF, WinForm, ASP.NET, Win32, trong đó WPF mặc định hỗ trợ UIA
Công cụ hỗ trợ (assistive tool) như công cụ đọc màn hình có thể thông báo cho người dùng (ví dụ như một cửa sổ được mở) hoặc công cụ kiểm tra (automation tool)
có thể dùng UIA để chạy và chờ đến khi kết thúc một loạt thao tác được ghi nhận của người sử dụng
Trang 22Các thành phần giao diện người dùng (User Interface - UI) có thể được xem như một cấu trúc cây với desktop là gốc, cửa sổ ứng dụng là nhánh trực tiếp, các thành phần của ứng dụng là các nhánh con, mỗi một thành phần được gọi là UI Element hay Automation Element (AE) UI Element hỗ trợ pattern, các pattern khác nhau với các cấu trúc điều khiển khác nhau Ví dụ: nút (button) có invoke pattern, tương đương với click trên nút đó Các edit boxes có value pattern, có thể đặt giá trị cho chúng
UIA cung cấp cách để tìm kiếm trên cây để xác định các nhánh dựa trên các điều kiện cung cấp Ví dụ như tìm một UI Element từ gốc cây (desktop) hoặc từ của
sổ ứng dụng đang chạy UIA cũng hỗ trợ thông báo đến người dùng với các Events (sự kiện) nếu có thao tác tác động lên các Element này
2.1.1 Lịch sử
Năm 2005, Microsoft phát hành UIA như là một kế thừa MSAA Các API UI Automation đã được phát hành như là một phần của NET Framework 3.0, được bao gồm như là một phần của Windows Vista, Windows 7, và Windows Server 2008 SDK
2.1.2 Động lực và mục tiêu
Là một kế thừa của MSAA, UIA nhằm giải quyết các mục tiêu sau đây:
• Tạo sự hiệu quả cho các ứng dụng bên ngoài mà không cần móc (hook) vào các tiến trình của một ứng dụng đích
• Đưa ra thêm nhiều thông tin về các giao diện người dùng
• Cùng tồn tại và sử dụng với MSAA, nhưng không kế thừa những vấn đề tồn tại trong MSAA
• Cung cấp một thay thế cho MSAA nhưng đơn giản hơn để thực hiện triển khai
2.1.3 Kỹ thuật tổng quan
Ở phía client, UIA cung cấp một giao diện NET trong UIAutomationClient.dll
và một giao diện triển khai trực tiếp trong UIAutomationCore.dll
Ở phía server, UIAutomationCore.dll được gắn vào tất cả hoặc một số tiến trình lựa chọn trên desktop để thực lấy dữ liệu theo yêu cầu của phía client Các DLL
Trang 23cũng có thể tải các UIA plugins (gọi là providers) vào tiến trình chủ của nó để trích xuất dữ liệu sử dụng các kỹ thuật khác nhau Sơ đồ tổng quát được mô tả ở hình 2.1
và ý nghĩa của các thành phần được trình bày ở bảng 2.1
Hình 2.1: Mô hình kỹ thuật tổng quan UIA
UIA có 4 providers chính và các thành phần client, bao gồm:
và client cho các ứng dụng unmanaged client (ứng dụng viết trên nền C++); các ứng dụng unmanaged (client hoặc provider) không yêu cầu các thư viện được liệt kê dưới đây
Managed Provider API
(UIAutomationProvider.dll)
Một tập hợp các định nghĩa giao diện và chức năng được thực hiện bởi các ứng dụng managed UIA (ứng dụng được viết trên nền C# và VB.NET) Providers là các đối
Trang 24Các thành phần Mô tả
tượng cung cấp thông tin về thành phần giao diện người dùng và đáp ứng với lập trình đầu vào
Managed Client API
(UIAutomationClient.dll)
Một tập hợp các định nghĩa giao diện và các hàm cho các ứng dụng managed client UIA
UIAutomationClientsideProviders.dll Một tập hợp các UIA providers cho điều
khiển Win32 cũ và các ứng dụng MSAA Provider về phía client này hiện có sẵn cho các ứng dụng managed client theo mặc định
Bảng 2.1: Các thành phần của UIA
2.1.4 Các thành phần (Elements)
UIA cho thấy tất cả các mảnh của giao diện người dùng cho các ứng dụng khách (client application) như là một phần tử tự động hóa AE (Automation Element) Các thành phần này được chứa trong một cấu trúc cây, với desktop như là phần tử gốc của cây
Automation Element phơi bày ra các đặc tính (properties) của thành phần UI
mà chúng đại diện Một trong những đặc tính là các loại điều khiển (control types), trong đó xác định sự thể hiện cơ bản của nó và các chức năng như một thực thể nhận biết duy nhất (ví dụ, một nút (button) hoặc hộp kiểm tra (check box))
Ngoài ra, các thành phần này phơi bày các kiểu điều khiển (control patterns) cung cấp các đặc tính (properties) cụ thể với các loại điều khiển của chúng Kiểu điều khiển cũng phơi bày các phương pháp cho phép ứng dụng khách lấy thêm thông tin
về các yếu tố và cung cấp đầu vào Hình 2.2 trình bày ứng dụng Calculator của Windows cùng với một số kiểu điều khiển (Control Type) khác nhau của nó
Ứng dụng khách có thể lọc xem dữ liệu của cây theo kiểu điều khiển hoặc xem kiểu nội dung Ứng dụng cũng có thể tạo các kiểu xem tùy chỉnh
Trang 25Hình 2.2: Mô tả một cửa sổ ứng dụng cơ bản và một số UI Element của nó
2.1.5 Cây element (Element Tree)
Trong cây UIA có một thành phần gốc đại diện cho dektop hiện thời và các thành phần con đại diện cho các cửa sổ ứng dụng Mỗi thành phần con có thể chứa các thành phần đại diện cho phần của giao diện người dùng như menu, các nút, thanh công cụ, và các hộp tùy chọn Những thành phần này, đến lượt nó, có thể chứa các thành phần khác, chẳng hạn như danh sách các mục
Cây UIA không phải là một cấu trúc cố định và ít khi được nhìn thấy trong toàn bộ của nó bởi vì nó có thể chứa hàng ngàn thành phần khác Các bộ phận của cây được xây dựng khi cần thiết, và cây có thể có những thay đổi như các thành phần được thêm vào, di chuyển, hoặc xóa bỏ Ví dụ hình 2.3 vẽ một cây với gốc là desktop,
có 3 nhánh con là các ứng dụng 1, ứng dụng 2 và ứng dụng 3 Trong ứng dụng 1 có các UI Element là các nhánh con tạo nên một cấu trúc cây
Trang 26Hình 2.3: Mô hình cây UI Elements với gốc cây (root) là Desktop
2.1.6 Loại điều khiển (Control Types)
Các loại điều khiển UIA là những định danh đã biết có thể được sử dụng để chỉ những loại điều khiển một thành phần cụ thể đại diện, chẳng hạn như một hộp combo (combo box) hoặc một nút (button)
Có một định danh đã biết cho phép công nghệ hỗ trợ (assistive technology - AT) các thiết bị dễ dàng hơn xác định những loại điều khiển có sẵn trong giao diện người dùng (UI) và làm thế nào để tương tác với các điều khiển Một đại diện có thể đọc được của thông tin kiểu diều khiển UIA là sẵn có là đặc tính LocalizedControlType, có thể được tùy biến bằng cách điều khiển hoặc các nhà phát triển ứng dụng
UI Element được phân biệt bởi các kiểu Control Type, có nhiều loại Control Type khác nhau Các Control Types mà UI Automation hỗ trợ ở bảng 2.2:
Trang 27Control type Định nghĩa
Trang 28Control type Định nghĩa
Bảng 2.2: Các loại điều khiển (Control Types) của UI Element
2.1.7 Các kiểu điều khiển (Control Patterns)
Các kiểu điều khiển cung cấp một cách để phân loại và phơi bày một chức năng điều khiển độc lập của loại điều khiển hay sự xuất hiện của điều khiển Các kiểu điều khiển khác nhau được mô tả trong bảng 2.3
UIA sử dụng kiểu điều khiển để đại diện cho các hành vi điều khiển chung Ví
dụ, kiểu điều khiển Invoke được sử dụng cho các điều khiển có thể được tác động (như nút nhấn - button) và kiểu điều khiển Scroll được sử dụng cho các điều khiển có thể cuộn (như hộp danh sách – list boxes, danh sách – list views, hoặc hộp combo – combo boxes) Bởi vì mỗi kiểu điều khiển đại diện cho một chức năng riêng biệt, chúng có thể được kết hợp để mô tả đầy đủ các chức năng được hỗ trợ bởi một điều khiển xác định
Control Pattern Mô tả
DockPattern
Được sử dụng cho các điều khiển có thể neo trong một vùng chứa Ví dụ các thanh công cụ (toolbars) hoặc tool palettes
ExpandCollapsePattern
Được sử dụng cho các điều khiển có thể được mở rộng hoặc thu lại Ví dụ, các mục trình đơn (menu items) trong một ứng dụng như menu File
GridPattern
Được sử dụng cho các điều khiển có hỗ trợ chức năng lưới như thay đổi kích thước và di chuyển đến một ô được xác định Ví dụ như cách hiển thị biểu tượng icon lớn
Trang 29Control Pattern Mô tả
(large icon view) trong Windows Explorer hoặc các bảng đơn giản mà không cần tiêu đề trong Microsoft Word
GridItemPattern
Được sử dụng cho điều khiển có các ô trong lưới Các ô riêng lẻ hỗ trợ các kiểu GridItem Ví dụ, mỗi ô trong Microsoft Windows Explorer trong cách hiển thị dạng chi tiết (detail view)
InvokePattern Được sử dụng cho các điều khiển có thể được tác động,
chẳng hạn như một nút nhấn (button)
MultipleViewPattern
Được sử dụng cho các điều khiển có thể chuyển đổi giữa nhiều cách hiển thị của cùng một thông tin dữ liệu Ví dụ một điều khiển dạng listview, nơi dữ liệu có thể được hiển thị ở chế độ thu nhỏ (thumbnail), tiêu đề (title), biểu tượng (icon), danh sách (list), hoặc chi tiết (detail views)
RangeValuePattern
Được sử dụng cho điều khiển có một khoảng các giá trị
có thể được đặt cho điều khiển này Ví dụ, một điều khiển spinner thể hiện năm có thể có một khoảng giá trị từ năm
1900 đến năm 2010, trong khi một điều khiển spinner khác thể hiện tháng sẽ có một khoảng giá trị các tháng từ
1 đến 12
ScrollPattern
Được sử dụng cho các điều khiển có thể cuộn Ví dụ, một điều khiển mà có thanh cuộn được kích hoạt khi có nhiều thông tin hơn có thể được hiển thị trong khu vực có thể xem của điều khiển đó
ScrollItemPattern
Được sử dụng cho điều khiển có nhiều mục trong một danh sách có thể cuộn Ví dụ, một điều khiển danh sách như hộp combo box
SelectionPattern Được sử dụng cho điều khiển có thể lựa chọn Ví dụ, hộp
list box hoặc combo box
Trang 30Control Pattern Mô tả
SelectionItemPattern Được sử dụng cho các mục trong điều khiển có thể lựa
chọn, chẳng hạn như hộp list box và combo box
TablePattern Được sử dụng cho các điều khiển có một lưới cũng như
có thông tin tiêu đề Ví dụ, các bảng tính Microsoft Excel TableItemPattern Được sử dụng cho các mục trong một bảng
TextPattern Được sử dụng cho các điều khiển dạng edit và các tài liệu
trình bày thông tin dạng văn bản
Bảng 2.3: Các kiểu điều khiển (Control Pattern) của UI Element
2.1.8 Các đặc tính (Properties)
UIA phơi bày các đặc tính trên các thành phần UIA và các kiểu điều khiển Các tính chất này cho phép các ứng dụng khách UIA để khám phá thông tin về các
Trang 31phần của giao diện người dùng (UI), đặc biệt là các điều khiển, bao gồm cả dữ liệu tĩnh và dữ liệu động
Mỗi một UI Element luôn có các thành phần properties như trong bảng hình
4 Tùy theo UI Element đó thuộc loại Control Type nào mà các thành phần properties
sẽ có giá trị khác nhau Bảng 2.4 liệt kê tất cả các đặc tính của một UI Element:
AcceleratorKey Gets a string containing the accelerator key combinations
for the element
AccessKey Gets a string containing the access key character for the
element
AutomationId Gets a string containing the UI Automation identifier (ID)
for the element
BoundingRectangle Gets the coordinates of the rectangle that completely
encloses the element
ClassName Gets a string containing the class name of the element as
assigned by the control developer
ControlType Gets the ControlType of the element
FrameworkId Gets the name of the underlying UI framework
HasKeyboardFocus Gets a value that indicates whether the element has
keyboard focus
HelpText Gets the help text associated with the element
IsContentElement Gets a value that specifies whether the element is a content
element
IsControlElement Gets a value that indicates whether the element is viewed as
a control
IsEnabled Gets a value that indicates whether the user interface (UI)
item referenced by the UI Automation element is enabled IsKeyboardFocusable Gets a value that indicates whether the UI Automation
element can accept keyboard focus
Trang 32Tên Mô tả
IsOffscreen Gets a value that indicates whether the UI Automation
element is visible on the screen
IsPassword Gets a value that indicates whether the UI Automation
element contains protected content
IsRequiredForForm Gets a value that indicates whether the UI Automation
element is required to be filled out on a form
ItemStatus Gets a description of the status of an item within an element ItemType Gets a description of the type of an item
LabeledBy Gets the element that contains the text label for this
element
LocalizedControlType Gets a description of the control type
NativeWindowHandle Gets the handle of the element's window
Orientation Gets the orientation of the control
ProcessId Gets the process identifier (ID) of this element
Bảng 2.4: Các Properties của một UI Element
Hình 2.4: Các properties của một UI Element thực tế, là một nút nhấn (button) của
ứng dụng Calculator
Trang 33Trong các properties của một UI Element, ta quan tâm đến một số trường chính như sau:
• AutomationId: là kiểu chuỗi chứa số id của một UI Element, mỗi UI Element có một id duy nhất phân biệt nó với cái khác trong cùng một nhánh Element
• BoundingRectangle: kiểu Rect, gồm các thông số (x, y, width, height) Là
vị trí Element trên màn hình ở tọa độ (x, y), chiều dài và chiều rộng của
• IsControlElement: xác định UI Element có là kiểu điều khiển hay không
• IsEnabled: xác định element này được enable hay disable trên giao diện
• Name: xác định tên của element, lưu ý là một số element không được đặt tên
• ProcessId: xác định ID của process đang chạy Tất cả các UI Element của cùng một ứng dụng có cùng một ProcessId giống nhau Mỗi một ứng dụng khi chạy sẽ được hệ điều hành gán cho một ProcessId riêng biệt và duy nhất, mỗi lần chạy khác nhau sẽ có ProcessId khác nhau Ta có thể sử dụng giá trị ProcessId để tìm ngược lại đường dẫn của ứng dụng bằng hàm Process.GetProcessById(ProcessId).MainModule.FileName
2.1.9 Sự kiện (Events)
Sự kiện thông báo UIA là một tính năng quan trọng cho công nghệ hỗ trợ (AT) như đọc màn hình và phóng to màn hình Những ứng dụng khách UIA theo dõi sự kiện được đưa ra bởi UIA cung cấp xảy ra bên trong UIA, và sử dụng thông tin để thông báo cho người dùng cuối
Hiệu quả được cải thiện bằng cách cho phép các ứng dụng cung cấp dịch vụ
để nâng cao sự kiện chọn lọc, tùy thuộc vào việc ứng dụng khách đã đăng ký vào các
Trang 34sự kiện, hoặc không gì cả, nếu không có ứng dụng khách đang lắng nghe cho bất kỳ
sự kiện nào
2.1.10 Kiểu text (Text Pattern)
UIA cho thấy nhiều nội dung văn bản, bao gồm định dạng và các thuộc tính phong cách của các điều khiển văn bản trong nền tảng UIA hỗ trợ Những điều khiển này bao gồm trong Microsoft NET Framework TextBox và RichTextBox cũng như tương đương của chúng trong Win32
Phơi bày các nội dung văn bản của một điều khiển được thực hiện thông qua việc sử dụng các kiểu điều khiển TextPattern, đại diện cho các nội dung của vùng chứa văn bản như là một luồng văn bản Đổi lại, TextPattern đòi hỏi sự hỗ trợ của các lớp TextPatternRange để bộc lộ định dạng và thuộc tính phong cách TextPatternRange hỗ trợ TextPattern bởi đại diện cho một khoảng text vùng chứa văn bản với các điểm bắt đầu và điểm cuối Nhiều hay tách rời dòng văn bản có thể được đại diện bởi nhiều hơn một đối tượng TextPatternRange TextPatternRange hỗ trợ chức năng như nhân bản, lựa chọn, so sánh
2.1.11 UI Automation cho kiểm thử tự động
UIA cũng hữu ích như một bộ khung cho việc lập trình truy cập trong các kịch bản thử nghiệm tự động Ngoài việc cung cấp các giải pháp tinh tế hơn cho khả năng truy cập, nó cũng được thiết kế đặc biệt để cung cấp các chức năng mạnh mẽ để kiểm tra tự động
Lập trình truy cập cung cấp khả năng bắt chước, thông qua mã lập trình, bất
kỳ sự tương tác và kinh nghiệm bởi các tương tác người dùng truyền thống UIA cho phép lập trình truy cập thông qua năm thành phần:
• Cây UIA tạo điều kiện cho duyệt thông qua cấu trúc logic của giao diện người dùng cho khả năng truy cập và tự động hóa
• Các thành phần UI (UI Automation Elements) là các phần riêng biệt trong giao diện người dùng
• Các đặc tính tự động hóa UI (UI Automation Properties) cung cấp thông tin cụ thể về các thành phần giao diện người dùng hoặc các kiểu điều khiển (Control Pattern)
Trang 35• Các kiểu điều khiển tự động hóa UI (UI Automation Control Pattern) xác định một khía cạnh cụ thể của các chức năng của điều khiển hoặc tính năng; chúng có thể bao gồm đặc tính, phương pháp, sự kiện và thông tin cấu trúc
• Các sự kiện tự động hóa UI (UI Automation Events) cung cấp một kích hoạt để đáp ứng với những thay đổi và thông báo các thông tin trong UIA
2.2 Giới thiệu công nghệ Automation trên Web
Rất nhiều phần mềm ứng dụng ngày nay được viết như các ứng dụng dựa trên web để chạy trong một trình duyệt Internet Hiệu quả của việc thử nghiệm các ứng dụng này rất khác nhau giữa các công ty và tổ chức
Trong một thời đại của các quá trình phần mềm tương tác và đáp ứng cao, test automation thường xuyên trở thành một yêu cầu cho các dự án phần mềm, kiểm tra
tự động hóa thường là câu trả lời Kiểm tra tự động có nghĩa là sử dụng một công cụ phần mềm để chạy thử nghiệm lặp lại đối với các ứng dụng được thử nghiệm
Có rất nhiều lợi thế để kiểm thử tự động Hầu hết đều liên quan đến việc lặp lại của các bài kiểm tra và tốc độ mà tại đó các bài kiểm tra có thể được thực thi Có một số công cụ mã nguồn mở và thương mại sẵn sàng cho việc hỗ trợ sự phát triển của kiểm thử tự động Selenium có thể là giải pháp mã nguồn mở được dùng nhiều nhất
Kiểm tra tự động hóa có lợi thế rất lớn để nâng cao hiệu quả lâu dài của quá trình thử nghiệm của một đội ngũ kiểm tra phần mềm Kiểm tra tự động hỗ trợ:
• Kiểm tra lặp lại thường xuyên
• Thông tin phản hồi nhanh chóng đến nhà phát triển
• Lặp đi lặp lại hầu như không giới hạn các trường hợp thực hiện kiểm tra
• Báo cáo các khiếm khuyết được tùy chỉnh
• Tìm các khuyết tật bị bỏ qua bởi các kiểm tra thủ công
2.2.1 Tự động hóa hay không?
Tự động hóa luôn luôn có lợi thế? Khi nào ta nên quyết định tự động hóa? Không phải là luôn luôn thuận lợi để tự động hóa trong các trường hợp thử nghiệm Có nhiều trường hợp khi kiểm tra thủ có thể thích hợp hơn Ví dụ, nếu giao diện người dùng của ứng dụng sẽ thay đổi đáng kể trong tương lai gần, khi đó bất kỳ
Trang 36tự động hóa có thể cần phải được viết lại Ngoài ra, đôi khi đơn giản là không đủ thời gian để xây dựng tự động hóa kiểm tra Trong ngắn hạn, kiểm tra thủ công có thể có hiệu quả hơn Nếu một ứng dụng có thời hạn chót rất chặt chẽ, hiện nay không có thử nghiệm tự động có sẵn, và nó bắt buộc rằng các thử nghiệm được thực hiện trong một khoảng thời gian đó, thì khi đó kiểm tra thủ công là giải pháp tốt nhất
2.2.2 Giới thiệu Selenium
Selenium là một tập hợp các công cụ phần mềm khác nhau với cách tiếp cận khác nhau để hỗ trợ kiểm thử tự động Hầu hết các kỹ sư đảm bảo chất lượng (QA Engineers) của Selenium tập trung vào một hoặc hai công cụ mà hầu hết đáp ứng nhu cầu của các dự án của họ, tuy nhiên việc học tất cả các công cụ này sẽ cung cấp cho bạn nhiều lựa chọn khác nhau để tiếp cận vấn đề tự động hóa thử nghiệm khác nhau Toàn bộ bộ công cụ tập hợp phong phú các chức năng kiểm tra thiết kế riêng cho nhu cầu của các thử nghiệm của ứng dụng web của tất cả các loại Những hoạt động linh hoạt, cho phép nhiều tùy chọn để định vị các thành phần giao diện người dùng và so sánh kết quả kiểm tra dự kiến đối với hành vi ứng dụng thực tế Một trong những tính năng chính của Selenium là sự hỗ trợ để thực hiện các bài kiểm tra của một người trên nhiều nền tảng trình duyệt khác nhau
2.2.3 Bộ công cụ Selenium
Selenium bao gồm nhiều công cụ phần mềm Mỗi cái có một vai trò cụ thể
1 Selenium 2 (Selenium WebDriver)
Selenium 2 là định hướng tương lai của dự án và sự bổ sung mới nhất cho bộ công cụ Selenium Thương hiệu công cụ tự động hóa mới này cung cấp tất cả các loại tính năng tuyệt vời, bao gồm các API kết hợp và hướng đối tượng cũng như một câu trả lời cho những hạn chế của việc phiên bản cũ
Cả Selenium và nhà phát triển WebDriver đồng ý rằng cả hai công cụ đều có những ưu và rằng việc sáp nhập hai dự án này sẽ tạo ra một công cụ tự động hóa nhiều mạnh mẽ hơn
Selenium 2.0 là sản phẩm của nỗ lực đó Nó hỗ trợ các API WebDriver và các công nghệ nền tảng, cùng với công nghệ Selenium 1 bên dưới API WebDriver cho
Trang 37sự linh hoạt tối đa trong các thử nghiệm Ngoài ra, Selenium 2 vẫn chạy giao diện Selenium RC của Selenium 1 đối với vấn đề tương thích ngược
2 Selenium 1 (Selenium RC hoặc Remote Control)
Selenium RC là dự án Selenium chính trong một thời gian dài, trước khi WebDriver/Selenium hợp nhất đưa lên Selenium 2, các công cụ mới nhất và mạnh
4 Selenium Grid
Selenium Grid cho phép các giải pháp Selenium RC mở rộng cho các thử nghiệm lớn và dãy thử nghiệm phải được chạy trong nhiều môi trường Selenium Grid cho phép chạy các bài kiểm tra song song, có nghĩa là, các bài kiểm tra khác nhau có thể chạy cùng lúc trên máy từ xa khác nhau Điều này có hai lợi thế Đầu tiên, nếu bạn có một bộ thử nghiệm lớn, hoặc một bộ thử nghiệm chạy chậm, bạn có thể tăng hiệu quả của nó đáng kể bằng cách sử dụng Selenium Grid để chia bộ kiểm tra của bạn để chạy thử nghiệm khác nhau tại cùng một thời gian sử dụng các loại máy khác nhau Ngoài ra, nếu bạn phải chạy bộ kiểm tra của bạn trên nhiều môi trường mà bạn có thể có các máy từ xa khác nhau hỗ trợ và chạy thử nghiệm của bạn trong họ cùng một lúc Trong mỗi trường hợp Selenium Grid cải thiện đáng kể thời gian cần để chạy bằng cách sử dụng xử lý song song
2.2.4 Hỗ trợ trình duyệt
Trong Selenium 2.0, các trình duyệt được hỗ trợ khác nhau tùy thuộc vào việc bạn đang sử dụng Selenium WebDriver hoặc Selenium RC
Trang 38Selenium WebDriver hỗ trợ các trình duyệt sau cùng với các hệ điều hành mà các trình duyệt này tương thích:
• Google Chrome
• Internet Explorer 7, 8, 9, 10, và 11 trên hệ điều hành Vista, Windows 7, Windows 8 và Windows 10 Tính đến ngày 15/4/2014, IE 6 không còn được hỗ trợ Hỗ trợ chạy các phiên bản 32-bit và 64-bit của trình duyệt
• Firefox: ESR mới nhất, trước ESR, phiên bản hiện tại, một trong những phiên bản trước đó
• Safari
• Opera
• HtmlUnit
• PhantomJs
• Android (với Selendroid hoặc appium)
• iOS (với ios-driver hoặc appium)
Selenium 1.0 và Selenium-RC: hỗ trợ các trình duyệt cũ với tính năng hạn chế
2.2.5 Ứng dụng thực tế với Selenium WebDriver
Trang 39Hình 2.5: Màn hình đăng nhập dùng Selenium WebDriver
• Lấy giá trị tên học viên và ngành học bằng cách xác định giá trị của các element tương ứng (Hình 2.6) Toàn bộ công việc được thực hiện một cách
tự động, từ bước điền tên đăng nhập, mật khẩu đến lấy giá trị tên và ngành học lưu vào các biến, người dùng không cần thực hiện một thao tác nào
Hình 2.6: Lấy các Element dùng Selenium WebDriver
Trang 402 Cách thực hiện
Khác với các hệ thống test automation trên Windows, trên nền web ta xác định các Element dựa theo các thuộc tính của Document Object Model (DOM) như ID, Xpath, CssStyle… Ví dụ ở hình 2.7, dùng addon FirePath trên trình duyệt Firefox, ta
xác định Element tên học viên có chuỗi ID là: //*[@id='header_col3']/div[1]/b
Hình 2.7: Xác định Element trên trình duyệt
Để tích hợp công cụ Selenium WebDriver, đầu tiên tạo một new project tên Selenium, chuột phải vào project chọn “Manage Nuget Packages for Solution…”, chọn và cài gói Selenium.WebDriver như hình 2.8