Tải bản đầy đủ (.pdf) (20 trang)

Báo cáo tìm hiểu công cụ selenium

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (779.05 KB, 20 trang )

MỤC LỤC
Chương 1: Giới thiệu Selenium 1
1.1. Đặt vấn đề 1
1.2. Lịch sử và giới thiệu chung 1
1.2.1. Lịch sử phát triển. 1
1.2.2. Giới thiệu chung 2
1.3. Selenium IDE 3
1.4. Selenium Core 4
Chương 2: Cài đặt và sử dụng 5
2.1. Cài đặt 5
2.1.1. Selenium IDE 5
2.1.2. Selenium Core 6
2.2. Selenese – Test case – Test suite 7
2.2.1. Selenese 7
2.2.2. Test case 9
2.2.3. Test suite 10
Chương 3: DEMO 11
3.1. Ứng dụng Selenium trong form login đơn giản 11
3.1.1. Thử nghiệm bằng Selenium IDE 11
3.1.2. Thử nghiệm bằng Selenium Core 13
3.2. Thử nghiệm với một số website phức tạp 15
Chương 4: đánh giá và tổng kết 16
4.1. Đánh giá chung 16
4.2. Tổng kết 16
Tài liệu tham khảo: 18


Báo cáo Tìm hiểu công cụ Selenium

2 | P a g e



Nhận xét của giảng viên















Báo cáo Tìm hiểu công cụ Selenium

1 | P a g e

Chương 1: Giới thiệu Selenium

1.1. Đặt vấn đề
Trong giai đoạn bùng nổ về công nghệ thông tin hiện nay, nhu cầu phát triển
phần mềm nói chung và các ứng dụng xây dựng trên nền web nói riêng về chất lượng và
số lượng đang trở nên bức thiết. Kéo theo đó là nhu cầu kiểm thử giao diện ứng dụng web
để đạt được chất lượng tối ưu trước khi đến tay khách hàng. Vì thế mà các công cụ hỗ trợ
kiểm tra tự động đang dần trở thành các trợ thủ đắc lực cho đội ngũ phát triển phần mềm.
Một trong số đó, công cụ tiêu biểu là Selenium. Đây là bộ công cụ mã nguồn mở, mạnh

mẽ, hỗ trợ các ứng dụng trên nền web, nhiều platform và các trình duyệt phổ biến.

1.2. Lịch sử và giới thiệu chung
1.2.1. Lịch sử phát triển
SELENIUM(SE) là một phần mềm mã nguồn mở, được phát triển bởi Jason
Huggins vào năm 2004 và được phát triển bởi Thoughtwork. Ông phát triển thư viên
Javascript để tự động chạy các test trên nhiều trình duyệt, chính thư viện này đã trở thành
Selenium Core tạo cơ sở cho Selenium IDE và Selenium Remote Control(RC). Selenium
RC là một đột phá vì không sản phẩm nào cho phép bạn điều khiển trình duyệt với bất kì
ngôn ngữ mình chọn.
Vào năm 2006, một nhân viên của Google tên là Simon Stewart bắt đầu tiếp tục
công việc được đặt tên là Webdriver. Google đã có một lượng người rất đông sử dụng
Selenium, nhưng các tester vẫn làm việc vất vả trước sự hạn chế của sản phẩm
Tới năm 2008, câu chuyện quan trọng của năm đó là sự kết hợp giữa Selenium và
Web driver. Selenium đã lớn mạnh nhưng Web driver là công cụ của tương lai. Sự tham
gia của hai công cụ này cung cấp một tập các tính năng cho người sử dụng. Lời giải thích
tại sao Webdriver và Selenium lại sáp nhập được chi tiết bởi Simon Stewart, tác giả của
Web driver.
Báo cáo Tìm hiểu công cụ Selenium

2 | P a g e

“ Tại sao lại có dự án sáp nhập? Một phần vì web driver khắc phục những thiếu sót
trong Selenium (bằng việc bỏ qua JS sandbox, và chúng ta đã có một API tuyệt vời) thêm
nữa Selenium lại bổ sung thiếu sót cho Web driver ( hỗ trợ pham vi rộng hơn của các trình
duyệt) và do những đóng góp của Selenium làm tôi cảm thấy đó là cách tốt nhất để mang
tới framework hoàn hảo cho người dùng.

1.2.2. Giới thiệu chung
Selenium gồm nhiều công cụ với cách tiếp cận khác nhau để hỗ trợ kiểm thử tự

động. Bộ công cụ này rất linh hoạt cho phép lựa chọn các yếu tố giao diện hay so sánh kết
quả thí nghiệm dự kiến với thực tiễn. Một trong những tính năng chính của Selenium là hỗ
trợ kiểm thử trên nhiều trình duyệt. Selnium là một công cụ hỗ trợ kiểm tra tự động cho
các ứng dụng chạy trên nền web. Selenium hỗ trợ kiểm tra hầu hết trên các trình duyệt phổ
biến hiện nay như Firefox , Internet Explorer , Safari , cũng như các hệ điều hành chủ
yếu như Windows , Linux , Mac , Selenium hỗ trợ một số lớn các ngôn ngữ lập trình như
C# , Java , Perl , PHP , Python, Ruby,
Selenium có thể kết hợp thêm với một số công cụ khác như Bromien , Junit nhưng
với người dùng thông thường chỉ cần chạy tự động mà không cần cài thêm các công cụ bổ
trợ.
Selenium bao gồm một bộ công cụ hỗ trợ kiểm tra tự động tính năng của ứng dụng
web bao gồm: Selenium IDE, Selenium Remote control(RC), Selenium Core và Selenium
Grid.
- Selenium IDE được phát triển dưới dạng một ứng dụng mở rộng (add-on) cho
Mozilla Firefox phiên bản 2.0 trở lên. Công cụ cung cấp chức năng Record and
Playback.
- Selenium Remote Control với bộ công cụ này cho phép nhận các Test script được
thu bởi Selenium IDE, cho phép chỉnh sửa cải tiến linh động bằng ngôn ngữ lập
trình khác nhau . Sau đó khởi động một trong các trình duyệt web được chỉ định để
thực thi kiểm tra trực tiếp trên trình duyệt đó. Selenium RC còn cũng cấp khả năng
lưu lại kết quả kiểm tra.
Báo cáo Tìm hiểu công cụ Selenium

3 | P a g e

- Selenium Grid thực hiện phương pháp kiểm tra phân bố, phối hợp nhiều kết quả
Selenium RC để có thể thực thi trên nhiều trình duyệt web khác nhau trong cùng
một lúc. Selenium Grid cũng cho phép lưu lại kết quả kiếm tra.
- Selenium Core được tích hợp trong Selenium IDE, là một công cụ chạy các
testscript viết bằng Selenese.


Selenium có nhiều cách sử dụng khác nhau. Chúng ta có thể dùng Test Runner
mode(Bot mode) sử dụng Selenium Core, cách này dùng các test case và test suite dưới
dạng hàng trong file html.
Với Selenium Remote control (RC) là driven mode, ở đây các test case trong các
ngôn ngữ lựa chọn (Java, C#, Python, Perl, Ruby…).
Record mode sử dụng Selenium IDE để thu lại các thao tác và giao diện web.

1.3. Selenium IDE
Selenium IDE là công cụ giúp bạn phát triển ca kiểm thử được xây dựng dưới dạng
add-ons của Fire-fox. Nó là cách tiện lợi nhất để xây dựng các ca kiếm thử, gồm các phần
tử giao diện giúp bạn có thể lựa chọn thể hiện các thao tác, không chỉ tiết kiệm thời gian
mà còn là cách thông minh để hiểu kịch bản Selenium.
Bộ công cụ này cung cấp chức năng “thu và chạy lại”-Record and Playback. Nhờ
đó Tester có thể nhanh chóng tạo một bộ kịch bản kiểm tra (test script) bằng cách trực tiếp
“thu” các thao tác của mình trên đối tượng cần kiểm tra thành một tập những câu lệnh
“Selenese” ( ngôn ngữ kịch bản được phát triển cho Selenium IDE và Selenium Core – có
dạng bản HTML ) . Sau đó chạy lại các câu lệnh này để kiểm tra. Chức năng năng này rất
hữu dụng , cho phép tiết kiệm thời gian viết kịch bản kiểm tra. Selenium IDE cho phép
lưu kịch bản đã thu dưới nhiều loại ngôn ngữ lập trình. Selenium IDE có kiến trúc gồm
Browser và Web Server như hình:
Báo cáo Tìm hiểu công cụ Selenium

4 | P a g e


Hình 1.1. Kiến trúc của Selenium IDE.

1.4. Selenium Core
Đã được tích hợp trong Selenium IDE. Selenium Core là một công cụ chạy các test

script viết bằng Selenese . Thế mạnh của công cụ này là có thể chạy test script trên hầu hết
các trình duyệt , nhưng lại yêu cầu được cài đặt trên máy chủ của ứng dụng hay website
cần kiểm tra. Điều này là không thể khi Tester không có quyền truy cập đến máy chủ.
Cấu trúc của Selenium Core:

Hình 1.2. Kiến trúc Selenium Core
Báo cáo Tìm hiểu công cụ Selenium

5 | P a g e

Chương 2: Cài đặt và sử dụng

2.1. Cài đặt
2.1.1. Selenium IDE
Selenium IDE (Integrated Development Environment) được phát hành dưới dạng
phần mềm bổ trợ (add-on) của Firefox , cho phép test , edit và debug code . Selenium có
thể sinh code tự động hoặc nạp các đoạn mã viết tay.
Đề cài đặt Selenium IDE, ta vào tab Tools trên thanh công cụ của fire fox, phần
Add ons, search Selenium IDE hoăc vào trang chủ
download và tiến hành cài đặt sau đó khởi động lại trình duyệt, lúc này ở phần Tools của
Fire Fox có hiện thêm Selenium IDE

Hình 2.1. Add-on IDE trên Firefox
Sau khi cài đặt thành công thì giao diện của Selenium Ide như hình:
Báo cáo Tìm hiểu công cụ Selenium

6 | P a g e


Hình 2.2. Giao diện của Selenium IDE

Trên thanh công cụ của Selenium IDE có các tab như File, Edit, Actions, Options,
Help mỗi tab lại có nhiều lựa chọn khác nhau giúp người dùng dễ dàng sử dụng.

2.1.2. Selenium Core
Có 2 cách để cài đặt Selenium Core. Thứ nhất, Selenium Core được tích hợp trong
Selenium IDE nên ta chỉ cần cài đặt IDE. Cách thứ hai là download gói tin từ trang chủ
và chạy như 1 website bình thường.
Tất cả các test case và test suite đều phải được đặt vào trong thư mục tests của
Selenium Core. Để chạy chương trình, ta vào thư mục Core trong gói cài đặt Selenium
Core, và chạy file TestRunner.hta hoặc chạy TestRunner.html như 1 trang web. Màn hình
giao diện chính của Selenium Core:
Báo cáo Tìm hiểu công cụ Selenium

7 | P a g e


Hình 2.3.Giao diện của Selenium Core
Màn hình chia làm 4 frame:
- Test Suite là nơi ghi đường dẫn đến test suite, sau khi nhấp đường dẫn đến test
suite được đặt trong folder tests của gói cài thì ở đó sẽ hiển thị danh sách các
test case.
- Current Test: hiển thị từng test case
- Frame ở dưới dùng là nơi hiển thị giao diện ứng dụng web ta muốn test.
- Control Panel: là cửa số chứa các nút điều khiển của Selenium Core

2.2. Selenese – Test case – Test suite
2.2.1. Selenese
Các câu lệnh của Selenium thường được gọi là Selenese, là tập hợp những
commands chạy test của bạn. Một chuỗi những commands là một test script. Selenium
cung cấp một tập phong phú các command đầy đủ cho việc test các ứng dụng web. Các

lệnh cơ bản tạo ra một ngôn ngữ testing.
Trong Selenese có thể kiểm tra sự tồn tại của các Elements giao diện dựa trên các
thẻ tag HTML, kiểm tra các nội dung cụ thể kiểm tra các link hỏng, các trường đầu vào,
các tùy chọn selection, form submit và dữ liệu bảng, thêm vào nữa, commands Selenium
hỗ trợ kiểm tra size window, vị trí chuột, alert, các hàm ajax, cửa số pop up, event
handling, và nhiều tính năng ứng dụng web khác.
Selenese gồm có ba loại chính là Action, Accessors, Assertions:
Báo cáo Tìm hiểu công cụ Selenium

8 | P a g e

Action: là commands thường thao tác với các state của ứng dụng, như “click this
link”, và “select that option”. Nếu action fail, hoặc có lỗi, quá trình thực thi của test
hiện tại sẽ bị dừng lại. Nhiều actions có thể được gọi với “AndWait, thay thế luôn
được sử dụng khi các hành động để trình duyệt điều hướng đến trang khác hoặc nạp
lại trang hiện tại.
Ví dụ:
- click():click ở vị trí chuột
- clickAt ( locator,coordString ) : click vào link, button, checkbox hoặc
radio button. Nếu việc click dẫn đến một trang khác thì gọi lệnh
waitForPageToLoad
- close ( ) : mô phỏng người sử dụng nhấn vào nút “close” trên thanh tiêu đề
của một cửa sổ hoặc tab.

Accessors: để kiểm tra trạng thái của ứng dụng và lưu trữ các kết quả trong các
biến ví dụ với storeTitle nó cũng được sử dụng tự động như Assertions. Accessors
được sử dụng do có được giá trị từ một phần tử và so sánh , đưa quyết định hợp lý
để thực hiện các bước kiểm tra, thực thi câu lệnh trong vòng lặp dựa trên giá trị
được trả về bởi các phần tử.
Ví dụ:

- assertErrorOnNext ( message ) : kì vọng một lỗi ở lệnh tiếp theo
- storeAlert ( variableName ) : Truy xuất tin nhắn của JavaSript alert trong
quá trình hành động trước đó, hoặc fail nếu không có alert.

Assertions: giống như Accessors, nhưng có thể xác minh trạng thái của ứng dụng
phù hợp với những gì được mong đợi. Selenium assertions có thể sử dụng theo 3
cách: assert, verify và waitFor.
Ví dụ:
- assertText : Khi “assert” thất bại, kiểm tra bị hủy.
Báo cáo Tìm hiểu công cụ Selenium

9 | P a g e

- verifyText: Khi “verify” thất bại, kiểm tra vẫn sẽ tiếp tục thực hiện,
đăng nhập thất bại.
- waitFor: chờ đợi đối với một số điều kiện để trở thành hiện thực. Nó
thất bại và ngăn chặn kiểm tra nếu điều kiên không trở thành hiện thực
trong thời gian thiết lập.

2.2.2. Test case
Source code của Test case hiển thị ở tab Source thông thường ở dưới dạng HTML,
ở dạng 1 bảng gồm 3 cột được viết bằng các câu lệnh selenese. Cột thứ nhất là các hành
động được thực hiện trên đối tượng giao diện ứng dụng web. Cột thứ hai là đối tượng của
các phương thức. Và cột thứ ba là giá trị truyền vào cho phương thức.

Hình 2.4. Tab Source.
Test case thường được xây dựng theo 4 bước lần lượt Recording, Adding
Verifications and Asserts, Editing, Open and save.
Sau khi tiến hành xây dựng test case thực hiện việc Running Test case qua một số
nút điều khiển như Running test case, Stop and start, Stop/ start from middle, Run any

single command để quan sát quá trình test. Kết quả số test case pass và fail sẽ được hiển
thị ở góc trái phía dưới danh sách các test case.

Báo cáo Tìm hiểu công cụ Selenium

10 | P a g e

2.2.3. Test suite
Khi đã có một hoặc một tập các test case ta cần tổng hợp chúng vào trong một test
suite. Test suite mặc định được viết theo ngôn ngữ HTML, là một bảng gồm một cột với ở
mỗi cột là các test case. Test case chỉ được liệt kê như một thành phần của test suite

Ngoài ra, Selenium cũng cung cấp khả năng export test case và test suite ra nhiều
ngôn ngữ phục vụ cho các thành phần test khác nhau như Python, Ruby, Java, C# để test
trên các công cụ unittest, Rspec, Junit tương ứng, và các thành phần khác của Selenium
như WebDriver, Remote Control

Hình 2.5. Export test case
Báo cáo Tìm hiểu công cụ Selenium

11 | P a g e

Chương 3: DEMO

3.1. Ứng dụng Selenium trong form login đơn giản

Hình 3.1. Màn hình login
Nhóm xây dựng một số đoạn mã đơn giản là form Login viết bằng HTML và
Javascript nhằm mục đích thử nghiệm các chức năng của Selenium IDE và Selenium
Core.

Khi đăng nhập với tên và mật khẩu hợp lệ (admin – admin) chương trình sẽ vào 1
trang welcome, trong đó có một dòng chào mừng đăng nhập thành công, và trong đó có 1
button, khi click vào button thì sẽ bật ra một cửa sổ “Hi, Admin”
Nhóm thực hiện test theo 2 cách: test bằng Selenium IDE trên trình duyệt Firefox
và test bằng Selenium Core trên các trình duyệt Firfox, Chrome, Safari, Opera, Internet
Explorer.

3.1.1. Thử nghiệm bằng Selenium IDE

- Tiến hành record lại một số thao tác: Nhập tên đăng nhập và mật khẩu hợp lệ (admin –
admin) và submit. Form đăng nhập thành công vào trang welcome, bôi đen dòng chữ
“Hello Admin, Have a nice day!!” click chuột phải và chọn “assertText css=font Hello
Báo cáo Tìm hiểu công cụ Selenium

12 | P a g e

Admin, Have a nice day!!” để xác định phần tử font có giá trị là đoạn text trên. Tắt
record, lưu lại test case
Command
Target
Value
open
/web/login.html

type
id=textName
admin
type
id=textPass
admin

clickAndWait
css=input.button

assertText
css=font
Hello Admin, Have a nice day!!

Playback lại test case, form đăng nhập thành công. Selenium thông báo 1 runs và 0
failures.
- Tạo test case mới, nhập vào table các giá trị
Command
Target
Value
open
/web/login.html

type
id=textName
admin
type
id=textPass
123456
clickAndWait
css=input.button

assertText
css=font
Hello Admin, Have a nice day!!

Lưu và chạy test, chương trình báo 1 failures, chương trình dừng và báo lỗi ở

assertText do không tìm thấy phần tử font có giá trị “Hello Admin, Have a nice day!!”
trên page.
- Tạo test case mới, thu các thao tác như trên, sau đó thêm 1 thao tác click vào button
“Click here” để bật ra cửa sổ alert “Hi, Admin”, dừng và lưu test case ta được bảng

Báo cáo Tìm hiểu công cụ Selenium

13 | P a g e

Command
Target
Value
open
/web/login.html

type
id=textName
admin
type
id=textPass
admin
clickAndWait
css=input.button

assertText
css=font
Hello Admin, Have a nice day!!
click
css=button


assertAlert
Hi, Admin

Lưu và chạy test case, chương trình chạy thành công.
- Tạo một file script test case đặt tên “Login.html” như sau:

Nạp test case vào. Chạy test case, chương trình báo 1 runs, 0 failures.
Có thể tùy sửa các giá trị user hoặc pass để test.
- Dán nội dung test case vào tab source. Chạy test case, chương trình báo 1 runs, 0
failures.
- Nhấp chuột vào command type, sửa giá trị của txtPass thành “123456”. Chạy test case,
chương trình dừng ở assertText và báo lỗi.
3.1.2. Thử nghiệm bằng Selenium Core
- Tạo một file test case “Login_pass.html” như sau:
Báo cáo Tìm hiểu công cụ Selenium

14 | P a g e


- Và một file “Login_fail.html” :

- Tạo một file test suite “TestSuite.html” :

Báo cáo Tìm hiểu công cụ Selenium

15 | P a g e

Lưu tất cả các file test case và test suite này vào thư mục tests của Selenium Core. Mở
trình duyệt Firefox để thử nghiệm bằng cách chạy file TestRunner.html trong thư mục
Core, sửa đường dẫn đến /tests/TestSuite.html. chạy các test case. Tùy chọn chạy tất

cả các test case, và chạy từng test case, chạy từng bước. Chương trình thực hiện thành
công.
- Sửa “Login_pass.html” thành

Sau đó chạy lại Selenium Core, nạp lại “TestSuite.html” và chạy
lại“Login_Pass.html”. Chương trình chạy thành công
Thử nghiệm với các trình duyệt Chrome, Safari, Internet Explorer Opera, Cờ Rôm
cũng cho kết quả tương tự.

3.2. Thử nghiệm với một số website phức tạp
Nhóm thực hiện sử dụng Selenium IDE trên một số website lớn trên mạng như
google.com, facebook.com, youtube.com. Thực hiện record bằng Selenium IDE. Thực
hiện đăng nhập, xem video trực tuyến, sau đó ngừng record, lưu các test case và chạy lại
Một số nhược điển rất lớn của Selenium IDE là không thể bắt được các tương tác
của Flash, Sliverlight. Selenium IDE cũng không ghi nhận tốt với những website sử dụng
công nghệ ajax.
Báo cáo Tìm hiểu công cụ Selenium

16 | P a g e

Chương 4: Đánh giá và tổng kết

4.1. Đánh giá chung
 Selenium là bộ công cụ rất gọn nhẹ, đơn giản, và dễ dàng cài đặt. Là công cụ open
source nên không cần lo lắng về vấn đề chi phí và bản quyền. Selenium được các nhà
phát triển không ngừng thay đổi để phù hợp với nhu cầu của các nhà phát triển ứng
dụng trên nền web.
 Selenium IDE và Core đều có thể chạy trên mọi Platform như Windows, Linux hay
Mac. Đơn giản, trực quan, các câu lệnh khá đơn giản và dễ hiểu dễ học.
 Selenium hỗ trợ việc tăng giảm tốc độ test, tạo breakpoint và chạy theo từng step hỗ

trợ rất tốt cho việc debug mã chương trình
 Selenium Core có thể chạy trên hầu hết các trình duyệt. Trong khi đó Selenium IDE
chỉ có thể chạy trên các phiên bản Firefox 2.0 trở lên.
 Selenium IDE chỉ có thể chạy trên một cửa sổ duy nhất.
 Selenium là công cụ được phát triển để kiểm thử các ứng dụng trên nền web nên nó
không thể kiểm thử các ứng dụng trên nền Windows hay Linux.
 Selenium không có khả năng test GUI vì không có các hàm hỗ trợ test giao diện như
màu sắc, cỡ chữ, …
 Selenium cung cấp khả năng record and playback khá tốt, phục vụ cho việc sinh các bộ
test case và test suite. Tuy nhiên không hoạt động tốt với các ứng dụng viết bằng
Flash, Sliverlight hay Ajax
4.2. Tổng kết
Trong thời điểm hiện tại , khi mà nhu cầu về phần mềm mới ngày càng nhiều và
phức tạp hơn – thì yêu cầu tối ưu kiểm thử trước khi đưa đến tay người sử dụng càng đòi
hỏi cấp thiết hơn . Việc tự động hóa một phần quy trình kiểm thử sẽ giúp hỗ trợ các tester
nâng cao nâng suất và chất lượng dự án . Tuy nhiên , chi phí cho các phần mềm kiểm thử
thương mại thường rất cao , đôi khi làm cho dự án không có khả năng sinh lời . Vì thế
chọn lựa các công cụ kiểm tra tự động mã nguồn mở là một lựa chọn rất sáng suốt .Một
Báo cáo Tìm hiểu công cụ Selenium

17 | P a g e

trong số các lựa chọn đó là Selenium . Selenium là một công cụ kiểm thử tuyệt vời nhưng
cũng có một số nhược điểm nghiêm trọng cần được khắc phục sớm.
Báo cáo đã trình bày một số hiểu biết cơ bản về Selenium cũng như một số kết quả
ứng dụng Selenium trong thực tế . Trong đó nhóm tập trung vào Selenium IDE – Đây là
công cụ phù hợp nhất cho những người mới bắt đầu và sinh các bộ test case và test suite
cho việc test bằng Selenium Core. Tuy nhiên , do hạn chế một số điều kiện như mới bắt
đầu tập sử dụng test bằng công cụ , không có nhiều thời gian , số lượng người dùng nhất là
ở Việt Nam còn ít , khả năng lập trình chưa tốt nên nhóm chưa thử nghiệm được Selenium

RC và Selenium Grid – cũng như chưa xây dựng được các test-script bằng các ngôn ngữ
khác như C# , Perl , Ruby, mới chỉ dừng lại ở sinh test case bằng Java và test dựa trên
Junit và Selenium RC. Trong tương lai , nhóm sẽ tiếp tục tìm hiểu thêm các chức năng của
Selenium và nghiên cứu cách xây dựng các test-script bằng ngôn ngữ Java để tối ưu hơn
khả năng của Selenium.

Báo cáo Tìm hiểu công cụ Selenium

18 | P a g e

Tài liệu tham khảo:
-
-
-
- Một số slide bài giảng từ các trang web tin cậy như

- Selenium Documentation (Release 1.0)

×