12/08/2018, 14:42

Selenium và Framework

Nguồn: https://vntesters.com http://toolsqa.com/selenium-webdriver Selenium là một trong những công cụ kiểm thử phần mềm tự động mã nguồn mở (open source test automation tool) mạnh mẽ nhất hiện nay cho việc kiểm thử ứng dụng Web. Selenium script có thể chạy được trên hầu hết các trình duyệt như ...

Nguồn: https://vntesters.com http://toolsqa.com/selenium-webdriver

Selenium là một trong những công cụ kiểm thử phần mềm tự động mã nguồn mở (open source test automation tool) mạnh mẽ nhất hiện nay cho việc kiểm thử ứng dụng Web. Selenium script có thể chạy được trên hầu hết các trình duyệt như IE, Mozilla FireFox, Chrome, Safari, Opera; và hầu hết các hệ điều hành như Windows, Mac, Linux. Trong loạt bài viết về Selenium, mình sẽ giới thiệu công cụ kiểm thử tự động Selenium ở mức cơ bản dành cho những bạn lần đầu đến với công cụ Selenium này dựa trên những kinh nghiệm mà bản thân mình đã tìm hiểu.

1. Về cấu trúc thì Selenium có 4 phần

• Selenium IDE • Selenium RC (Selenium 1 – Selenium Remote Control) • Selenium Gird • Selenium WebDriver (Selenium 2)

Selenium IDE (Integrated Development Environment) là một công cụ cho phép chúng ta Record/Playback một test script. Đây là một add-on hỗ trợ cho FireFox. Chúng ta chỉ có thể Record trên trình duyệt FireFox, nhưng bù lại, chúng ta có thể Playback trên các trình duyện khác như là IE, Chrome…. Selenium Gird là một hệ thống hỗ trợ người dùng thực thi test script trên nhiều trình duyệt một cách song song mà không cần phải chỉnh sửa test script. Selenium RC, Selenium WebDriver là một thư viện cho phép chúng ta lập trình (scripting) test script trên các ngôn ngữ lập trình khác nhau như Python, Java, C#, Ruby.

2. Các đặc điểm của Selenium

  • Mã nguồn mở. Phải nói điểm này là điểm mạnh nhất của Selenium khi so sánh với các test tool khác. Vì là mã nguồn mở nên chúng ta có thể sử dụng mà không phải lo lắng về phí bản quyền hay thời hạn sử dụng.
  • Cộng đồng hỗ trợ. Vì là mã nguồn mở nên Selenium có một cộng đồng hỗ trợ khá mạnh mẽ. Bên cạnh đó, Google là nơi phát triển Selenium nên chúng ta hoàn toàn có thể yên tâm về sự hổ trợ miễn phí khi có vấn đề về Selenium. Tuy nhiên, đây cũng là một điểm yếu của Selenium. Cơ bản vì là hàng miễn phí, cộng đồng lại đông nên một vấn đề có thể nhiều giải pháp, và có thể một số giải pháp là không hữu ích. Mặc khác, chúng ta không thể hối thúc hay ra deadline cho sự hỗ trợ.
  • Selenium hỗ trợ nhiều ngôn ngữ lập trình.
  • Selenium hỗ trợ chạy trên nhiều OS khác nhau với mức độ chỉnh sửa script hầu như là không có. Thực sự thì điều này phụ thuộc phần lớn vào khả năng viết script của chúng ta.
  • Chạy test case ở backround. Khi chúng ta thực thi một test scrpit, chúng ta hoàn toàn có thể làm việc khác trên cùng một PC. Điều này hỗ trợ chúng ta không cần tốn quá nhiều tài nguyên máy móc khi chạy test script.
  • Không hỗ trợ Win app. Selenium thực sự chỉ hỗ trợ chúng ta tương tác với Browser mà không hỗ trợ chúng ta làm việc với các Win app, kể cả Win dialog như Download/Upload – ngoại trừ Browser Alarm. Vậy nên, để xử lý các trường hợp cần tương tác với hệ thống hay một app thứ ba, chúng ta cần một hay nhiều thư viện khác như AutoIt hay Coded UI.

3. Về một số so sánh giữa Selenium và Test Tool khác như QTP

Dưới đây là bảng so sánh nhanh giữa Selenium và QTP dựa trên một số tiêu chí cơ bản để so sánh các công cụ kiểm thử tự động

Selenium là lựa chọn hoàn hảo nếu… • Developer chịu trách nhiệm phát triển và bảo trì các kiểm thử • Những kiểm thử bạn đang phát triển sẽ là 1 phần của một cơ sở hạ tầng lớn hơn • Chắc chắn là bạn sẽ thực hiện những kiểm thử trên trình duyệt mà thôi • Bạn nghĩ là bạn sẽ thực hiện những kiểm thử trên những môi trường khác ngoài Windows • Bạn muốn sử dụng những công cụ miễn phí
QTP có lẽ là lựa chọn tốt nếu… • Bạn muốn phát triển và duy trì các kiểm thử một cách nhanh chóng và dễ dàng. • Nếu bạn cần kiểm thử đáng kể bên ngoài trình duyệt

1. Important preliminary points:

Trước khi bắt đầu, cần cài đặt Mozilla Firefox. Truy cập: http://www.getfirefox.com/.

2. What is Selenium IDE

(Integrated Development Environment) là một công cụ cho phép chúng ta Record/Playback một test script. Đây là một add-on hỗ trợ cho FireFox. Chúng ta chỉ có thể Record trên trình duyệt FireFox

3. Set up IDE

B1. Mở trình duyệt firefox. Truy cập: https://addons.mozilla.org/en-us/firefox/addon/selenium-ide/ B2. Download và cài đặt Selenium IDE. Cài đặt selenium IDE giống như cài đặt một plugin trên trình duyệt Firefox. Click Add to Firefox

và cài đặt. B3. Khởi động lại trình duyệt Firefox B4. Lần đầu khởi động Selenium IDE Click vào icon Selenium trên menu Bar của firefox giao diện selenium IDE sẽ hiển thị như hình bên dưới

4. Selenium IDE Features

4.1. Tool Bar-Các biểu tượng của Selenium IDE:

Base URL — Nhập URL sẽ tiến hành kiểm thử. (tốc độ trượt): Điều khiển testcase chạy nhanh hay chậm. Chạy tất cả các testcase đang được mở. Nhấp vào nút Run để chạy thử nghiệm hiện đang được chọn. Khi chỉ có một thử nghiệm duy nhất được nạp vào thì nút này và nút Run All có tác dụng tương tự. Tạm dừng kiểm thử hiện đang chạy. Sau khi click vào biểu tượng Pause nó sẽ chuyển sang biểu tượng Resume. Với nút này cho phép bạn có thể tiếp tục chạy thử nghiệm của bạn tại đoạn bạn đã dừng. Chạy từng bước của một testcase tại một thời điểm. Sử dụng để debug testcase Áp dụng quy tắc Rollup: tính năng tiên tiến cho phép lặp đi lặp lại các câu lệnh Selenium được nhóm lại thành một hoạt động riêng lẻ. Tài liệu hướng dẫn chi tiết về quy tắc Rollup được trình bày ở mục UI-Element Documentation trên menu Help. Đây là nút record, nó được sử dụng khi các kiểm thử được ghi lại.

4.2. Menu Bar:

Menu File có các tùy chọn cho Test Case và Test Suite. Sử dụng cho việc thêm một Test Case mới, mở một Test Case, lưu một Test Case, xuất ra Test Case bằng ngôn ngữ mà bạn lựa chọn . Bạn cũng có thể mở các Test Case gần đây. Các tùy chọn này cũng có sẵn cho Test Suite. Menu Edit cho phép copy, paste, delete, undo và lựa chọn tất cả các thao tác cho chỉnh sửa các câu lệnh trong Test Case của bạn. Menu Options cho phép thay đổi các thiết lập. Bạn có thể thiết lập giá trị timeout cho một số các câu lệnh, add user-defined user extensions để làm cơ sở thiết lập cho các câu lệnh Selenium, và xác định định dạng (ngôn ngữ) được sử dụng khi lưu các test case của bạn.

4.3. Cửa sổ Test Case:

Kịch bản của bạn được hiển thị trong cửa sổ Test Case. Nó có 2 thẻ: table và source. Table/Source danh sách các action trong test case

4.3.1. Thẻ table: Thẻ table hiển thị câu lệnh và các thông số của chúng. Các trường Command (danh sách các action mà Selenium IDE đang hỗ trợ), Target (định nghĩa control mà chúng ta đang tương tác) và Value (dữ liệu test) Trong trường Target: Định dạng của một bộ định vị là: Kiểu bộ định vị = đối số Selenium hỗ trợ các kiểu bộ định vị sau:

  1. id
  2. name
  3. xpath
  4. dom
  5. identifier
  6. link
  7. css id and name: Khi bạn mở một trang web bất kỳ, kích chuột phải vào đối tượng xem mã nguồn. Bạn sẽ thấy được id hoặc name của đối tượng web đó. Các đối tượng web: textbox, listbox, radio button…đều có id và name riêng của nó. xpath: XML Path (Xpath) là ngôn ngữ đóng một vai trò quan trọng trong công tác trao đổi dữ liệu giữa các computer hay giữa các chương trình ứng dụng vì nó cho phép ta lựa chọn hay sàng lọc ra những dữ liệu nào mình muốn để trao đổi hay hiển thị. Ví dụ:

Link: Lựa chọn yếu tố liên kết trong đó chứa văn bản phù hợp với khuôn mẫu quy định. • link= văn bản liên kết. CSS: Lựa chọn phần tử sử dụng các bộ lọc css. css=a[href="#id3"] DOM: Document Object Model (DOM) là giao diện độc lập platform và ngôn ngữ cho phép chương trình và script truy xuất động và cập nhật nội dung, cấu trúc và style của tài liệu. Dom=javascriptExpression. 4.3.2. Thẻ Source: Thẻ Source hiển thị test case với định dạng có nguồn gốc trong tập tin sẽ được lưu trữ. Định dạng mặc định là HTML có thể thay đổi bằng ngôn ngữ lập trình Java, C#, hoặc ngôn ngữ kịch bản Python…Source cũng cho phép chỉnh sửa các test case ở nguyên dạng của nó, bao gồm các thao tác sao chép, cắt, dán.

4.4. Cửa sổ Log/Reference/UI-Element/Rollup

Cửa sổ phía dưới của Selenium sử dụng 4 chức năng khác nhau: Log, Reference, UI-Element, và Rollup tương ứng với 4 tab. 4.4.1. Log - thông tin về action đang được thực thi Khi bạn chạy test case, các thông báo lỗi và các thông báo thông tin tiến trình được hiển thị tự động. Các thông tin này có ích cho việc gỡ lỗi các test case. Nút Clear để xóa Log. Nút Info cho phép hiển thị các mức khác nhau của thông tin.

4.4.2. Reference - hướng dẫn sử dụng action đang được chọn Thẻ Reference là lựa chọn mặc định bất cứ khi nào bạn đăng nhập hoặc chỉnh sửa Selenese và các thông số trong chế độ Table. Cửa sổ Reference sẽ hiển thị tài liệu cho câu lệnh hiện tại (hiện đang được chọn).

4.4.3. UI-Element và Rollup: Thông tin chi tiết về hai cửa sổ này có thể được tìm kiếm trong tài liệu UI-Element trong menu Help.

5. Working with IDE:

5.1. Tạo testcase

Khởi động màn hình Selenium IDE Vào File -> New Test Case

5.2. Tạo testsuite

Khởi động màn hình Selenium IDE Vào file New Test Suite

5.3. Debug test

5.3.1. Recording test

  • Bắt đầu ghi lại một test case từ các tương tác của người dùng với website. Khi mở Selenium IDE, nút record mặc định là ON. Nếu bạn không muốn Selenium IDE bắt đầu ghi lại một cách tự động, bạn có thể tắt chức năng này bằng cách vào Options -> Options...và bỏ chọn “Start recording immediately on open.” Trong quá trình record Selenium IDE sẽ tự động chèn các câu lệnh vào trong test case của bạn. Thông thường là: • Nhấp chuột vào một liên kết – các câu lệnh click hoặc clickAndWait. • Nhập vào các giá trị - câu lệnh type. • Lựa chọn các tùy chọn từ hộp danh sách thả xuống – câu lệnh select. • Click vào các checkbox hoặc radio button – câu lệnh click. Với record Selenium IDE, đi đến trình duyệt mà bạn đang kiểm thử, kích phải chuột vào bất cứ đâu trên trang web sẽ hiện lên menu các câu lệnh verify và/hoặc assert. Khi kích phải chuột lên một văn bản hay một tiêu đề trên trang web hiện ra menu có chứa câu lệnh verifyTextPresent và tham số được đề xuất nên có cho chính văn bản đó. Bạn có thể click vào một hình ảnh hoặc một kiểm soát người dùng như là một button hoặc một checkbox chọn Show All Available Commands để thấy được tất cả các tùy chọn khác ngoài verifyTextPresent, ví dụ như verifyElementPresent…, bạn có thể lựa chọn các câu lệnh và cho vào trong test case của bạn. Như các bạn thấy, chúng ta làm đến đâu là Selenium IDE sẽ copy và tạo ra một dòng action tương ứng…

  • Edit (chỉnh sửa): • Chèn lệnh: Trong Table View: Chọn nơi trong test case mà bạn muốn chèn câu lệnh. Trên bảng Test case kích trái chuột trên dòng mà bạn muốn chèn câu lệnh mới. Kích phải chuột và chọn Insert Command, IDE sẽ thêm một dòng trống trước dòng bạn đã chọn. Bây giờ sử dụng các lệnh chỉnh sửa văn bản để nhập lệnh mới và các thông số của nó. Trong Source View: Chọn nơi trong test case mà bạn muốn chèn câu lệnh. Trên bảng Test case kích trái chuột vào giữa các lệnh nơi mà bạn muốn chèn câu lệnh mới và nhập vào các thẻ html cần thiết để tạo ra một hàng ba cột có chứa: câu lệnh, tham số đầu tiên (nếu nó được yêu cầu bởi câu lệnh) và tham số thứ hai (lặp lại, nếu được yêu cầu). • Chèn chú thích: Chú thích có thể được thêm vào test case của bạn để cho dễ đọc hơn. Nhưng khi chạy các test case thì các chú thích được bỏ qua. Trong Table View: Chọn một dòng trong test case của bạn, nơi bạn muốn chèn ghi chú. Kích chuột phải và chọn Insert Comment. Bây giờ sử dụng trường Command để nhập vào ghi chú. Ghi chú của bạn sẽ xuất hiện trong văn bản màu tím.

Trong Source View: Chọn điểm trong test case mà bạn muốn chèn chú thích, thêm một chú thích kiểu html. Ví dụ: <!—chú thích của bạn ở đây -->. 5.3.2. Saving Test Giống như hầu hết các chương trình, có lưu và mở các câu lệnh trong menu File. Tuy nhiên, trong Selenium IDE phân biệt giữa các test case và test suite. Để lưu các kiểm thử Selenium IDE cho lần sử dụng sau, bạn có thể lưu các test case hoặc test suite. Cần phải lưu các test case trước khi lưu test suite. Chúng ta lưu test case lại để có thể tái sử dụng vào lần sau (Regression Test). Ở đây, Selenium IDE có hai chức năng, Save và Export. Chức năng Save sẽ lưu test case của chúng ta ở dạng html, giống như những gì chúng ta thấy trong tab Source. Chức năng Export dùng để phát sinh ra code ở nhiều ngôn ngữ khác nhau như Python, Java, C#, Ruby. Các bạn chú ý là Export sẽ ra hai dạng code khác nhau, RC và WebDriver. Đây là hai dạng của Selenium Scripting mà mình đã đề cập ở phần một. Khi Save test case ở dạng html, chúng ta có thể mở lại test case trong Selenium IDE và Playback. Khi Export test case ra code, chúng ta không thể import lại Selenium IDE để Playback, mà chúng ta chỉ có thể sử dụng nó trong một framework khác như VS, Eclipse hay RobotFramework. Khi bạn mở một test case hoặc test suite đã tồn tại, Selenium IDE hiển thị các câu lệnh Selenium trong bảng Test case.

  • Chạy các Test case: IDE cho phép nhiều tùy chọn để chạy các test case của bạn. Bạn có thể chạy tất cả test case cùng một lúc, dừng lại và bắt đầu, chạy mỗi dòng một lần, chạy một câu lệnh đơn hiện đang phát triển, bạn có thể chạy một loạt toàn bộ test suite. Các test case được thực hiện rất linh hoạt trong IDE.
  • Chạy một test case: Click vào nút Run để chạy test case hiện đang hiển thị.
  • Chạy một test suite: Click vào nút Run All để chạy tất cả các test case trong test suite đã nạp hiện tại. Sau khi chạy, thực hiện Save:

1. Important preliminary points

Để thực hiện lấy vị trí element cần cài đặt các ứng dụng:

  • Firebug: https://addons.mozilla.org/firefox/addon/firebug
  • Firefinder: https://addons.mozilla.org/vi/firefox/addon/firepath/
  • IE Developer Tools: Đó là các bản IE7, IE8 and IE9 mà có thể xem vị trí element qua F12. Bản này cũng có một số các tính năng như Firebug có.
  • Google Chrome Developer Tools: Cũng như IE, có thể đi tới trình duyệt và cho phép tìm vị trí elements trên trang và có thể làm việc với Xpath.

2. Locating element by Id

2.1. finding IDs of elements on the page with Firebug

  • B1. Điều hướng tới: http://book.theautomatedtester.co.uk/chapter2 và click đến icon Firebug
  • B2. Click chọn icon Element trên Firebug.
  • B3. Di chuyển con trỏ tới vị trí mà bạn muốn lấy locate
  • B4. Nhìn vào Firebug thấy bôi đậm vị trí element đó.

2.2. finding elements by ID

  • B1. Mở Selenium IDE
  • B2. Điều hướng đến http://book.theautomatedtester.co.uk/chapter2 và Click icon Firebug
  • B3. Tìm bất kì Element mà bạn muốn tương tác trên page.Trong textbox Target của Selenium IDE, set vào Target là thuộc tính ID (chắc chắn rằng element đó có thuộc tính ID). Ví dụ tìm element có id là but1 trên page: http://book.theautomatedtester.co.uk/chapter2
  • B4. Type command là click
  • B5. Chạy script

Cuối cùng sẽ tìm được element tương ứng với ID truyền theo lệnh click như trong IDE như trên.

3. Moving elements on the page

finding elements by name:

  • B1. Mở Selenium IDE

  • B2. Điều hướng đến http://book.theautomatedtester.co.uk/chapter2 và Click icon Firebug

  • B3. Tìm bất kì Element mà bạn muốn tương tác trên page.Trong textbox Target của Selenium IDE, set vào value là thuộc tính name (chắc chắn rằng element đó có thuộc tính name). Ví dụ tìm element có id là but2 trên page : http://book.theautomatedtester.co.uk/chapter2

  • B4. Type command là click

  • B5. Chạy script

4. Adding filters to the name

4.1. finding elements by link text

  • B1. Bạn muốn follow 1 link bạn nên sử dụng target link =link.
  • B2. Trên http://book.theautomatedtester.co.uk/chapter2 , đi đến link Index của site. Trên Target của Selenium IDE, add link=Index. Click [Find] trên Selenium IDE, bạn sẽ nhìn thấy như sau:

4.2. finding elements by accessing the DOM via JavaScript

  • B1. Bạn muốn follow 1 button.
  • B2. Trên http://book.theautomatedtester.co.uk/chapter2, đi đến Element cần tìm. Trên Target của Selenium IDE, truy cập dom thông qua JS. Click [Find] trên Selenium IDE, bạn sẽ nhìn thấy như sau:

4.3. finding elements by XPath

Có 2 cách xác định xPath:

  • Xác định tuyệt đối “/” Một dấu slash “/” xác định một đường dẫn tuyệt đối đến một đối tượng UI. Ví dụ: “/html/body/table” cho phép chúng ta lấy ra toàn bộ các bảng html trên trang web ngay sau thẻ body.
  • Xác định tương đối “//” Hai dấu slash “//” cho chúng ta xác định một đối tượng UI một cách tương đối, không cần chính xác vị trí của thẻ html ở đâu trong toàn bộ mã nguồn của trang web. Ví dụ: “//div” cho phép chúng ta lấy ra toàn bộ thẻ div trong mã nguồn. “//div//span” cho phép chúng ta lấy ra toàn bộ thẻ span mà trước đó có một thẻ div, không quan tâm đến mức độ của thẻ div và span trong mã nguồn.
  • Xác định bằng thuộc tính “@” Ký hiệu “@” cho phép chúng ta lọc lại các đối tượng UI được trả về thông qua một thuộc tính có bên trong thẻ html. Ví dụ: “//div[@class=’abc’]” cho phép chúng ta lấy ra tất cả thẻ div trong mã nguồn mà có thuộc tính class là ‘abc’.

Từ đó ta tìm được element bởi Xpath như sau:

  • B1. Mở Selenium IDE
  • B2. Điều hướng đến http://book.theautomatedtester.co.uk/chapter2.
  • B3. Set type Click tới selectbox Command
  • B4. Set Type xpath=//input tới textbox Target
  • B5. Click [Find] trên Selenium IDE, bạn sẽ nhìn thấy như sau:

Xpath= lúc bắt đầu cho Selenium về Element cần lấy vị trí bởi Xpath. //: Query cần stop ở vị trí đầu tiên mà nó tìm thấy.

5. Using direct XPath in your test

finding elements by direct XPath:

  • B1. Mở Selenium IDE
  • B2. Điều hướng tới http://book.theautomatedtester.co.uk/chapter2
  • B3. Set xpath= /html/body/div[2]/div[3]/input vào Target
  • B4. Click button [Find], ta được kết quả như sau:

6. Xác định bằng nội dung text()

Chức năng text() cho phép chúng ta lọc các đối tượng UI được trả về dựa trên nội dung text bên trong một thẻ html. Ví dụ: “//div[text()=’abc’]” cho phép chúng ta lấy ra tất cả các thẻ div trong mã nguồn có text là ‘abc’. Tìm kiếm tuyệt đối theo text.

7. Xác định bằng innertext “.”

Tương tự như trường hợp trên. Ký hiệu “.” cho phép chúng ta lọc các đối tượng UI được trả về dựa trên nội dung innertext bên trong một thẻ html. Ví dụ: “//div[.=’abc’]” cho phép chúng ta lấy ra tất cả các thẻ div trong mã nguồn có innertext là ‘abc’.

8. Xác định bằng các chức năng xử lý chuỗi

Trong XPath, chúng ta có một số hàm chức năng để xử lý chuỗi như contains(), startwith() hay endwith() để lọc các đối tượng UI. Ví dụ: “//div[contains(text(),’abc’)]” cho phép chúng ta lấy ra tất cả các thẻ div trong mã nguồn có text chứa đoạn ‘abc’. “//div[startwith(.,’abc’)]” cho phép chúng ta lấy ra tất cả các thẻ div trong mã nguồn có innertext bắt đầu bằng ‘abc’. “//div[endwith(text(),’abc’)]” cho phép chúng ta lấy ra tất cả các thẻ div trong mã nguồn có text kết thúc bằng ‘abc’.

9. Xác định đối tượng cha “/..”

Ký hiệu “/..” cho phép chúng ta xác định đối tượng UI ở trên một cấp. Ví dụ: “//div/..” cho phép chúng ta lấy ra tất cả các thẻ html mà có thẻ div ngay bên dưới nó một cấp.

10. Xác định đối tượng từ một vị trí xác định preceding và following

Hai từ khoá preceding và following cho phép chúng ta lọc ra các đối tượng UI từ một đối tượng đã được xác định trước đó. Hai từ khoá này không phụ thuộc vào mức độ level của thẻ html trong mã nguồn. Ví dụ: “//div[@id=’abc’]/following::a” cho phép chúng ta lấy ra tất cả các thẻ a trong mã nguồn bên dưới một thẻ div có id là ‘abc’. “//div[@id=’abc’]/preceding::a” cho phép chúng ta lấy ra tất cả các thẻ a trong mã nguồn bên trên một thẻ div có id là ‘abc’. Ví dụ: //div[@id=divontheleft]/following::a

11. Using XPath to find the nth element of a type

  • B1. Mở Selenium IDE
  • B2. Điều hướng tới http://book.theautomatedtester.co.uk/chapter2
  • B3. Set //input[2] vào Target , type Click vào Command
  • B4. Click button [Find], ta được kết quả như sau:

12. Using element attributes in XPath queries

Ký hiệu “@” cho phép chúng ta lọc lại các đối tượng UI được trả về thông qua một thuộc tính có bên trong thẻ html. Ví dụ: “//div[@class=’abc’]” cho phép chúng ta lấy ra tất cả thẻ div trong mã nguồn mà có thuộc tính class là ‘abc’.

  • B1. Mở Selenium IDE
  • B2. Điều hướng tới http://book.theautomatedtester.co.uk/chapter2
  • B3. Set //div[@class='centerdiv'] vào Target
  • B4. Click button [Find], ta được kết quả như sau:

13. CSS Selectors

13.1. Finding elements by their attributes

  • B1. Mở Selenium IDE

  • B2. Điều hướng tới http://book.theautomatedtester.co.uk/chapter2 Xem html rồi lấy CSS/ Firepath như sau:

  • B3. Set css=input[name="but2"] vào Target

  • B4. Click button [Find], ta được kết quả như sau:

Theo cú pháp: node[attribute='value'] =>input[value='chocolate']=> css=input[value='chocolate']

1. Selenium Introduction

Selenium là một công cụ kiểm thử phần mềm tự động, được phát triển bởi ThoughtWorks từ năm 2004 với tên ban đầu là JavaScriptTestRunner. Các đặc điểm của Selenium:

  • Mã nguồn mở. Phải nói điểm này là điểm mạnh nhất của Selenium khi so sánh với các test tool khác. Vì là mã nguồn mở nên chúng ta có thể sử dụng mà không phải lo lắng về phí bản quyền hay thời hạn sử dụng.
  • Cộng đồng hỗ trợ. Vì là mã nguồn mở nên Selenium có một cộng đồng hỗ trợ khá mạnh mẽ. Bên cạnh đó, Google là nơi phát triển Selenium nên chúng ta hoàn toàn có thể yên tâm về sự hổ trợ miễn phí khi có vấn đề về Selenium. Tuy nhiên, đây cũng là một điểm yếu của Selenium. Cơ bản vì là hàng miễn phí, cộng đồng lại đông nên một vấn đề có thể nhiều giải pháp, và có thể một số giải pháp là không hữu ích. Mặc khác, chúng ta không thể hối thúc hay ra deadline cho sự hỗ trợ.
  • Selenium hỗ trợ nhiều ngôn ngữ lập trình.
  • Selenium hỗ trợ chạy trên nhiều OS khác nhau với mức độ chỉnh sửa script hầu như là không có. Thực sự thì điều này phụ thuộc phần lớn vào khả năng viết script của chúng ta.
  • Chạy test case ở backround. Khi chúng ta thực thi một test scrpit, chúng ta hoàn toàn có thể làm việc khác trên cùng một PC. Điều này hỗ trợ chúng ta không cần tốn quá nhiều tài nguyên máy móc khi chạy test script.
  • Không hỗ trợ Win app. Selenium thực sự chỉ hỗ trợ chúng ta tương tác với Browser mà không hỗ trợ chúng ta làm việc với các Win app, kể cả Win dialog như Download/Upload – ngoại trừ Browser Alarm. Vậy nên, để xử lý các trường hợp cần tương tác với hệ thống hay một app thứ ba, chúng ta cần một hay nhiều thư viện khác như AutoIt hay Coded UI.

2. Set Up Selenium WebDriver

2.1. Set Up Java

  • B1. Tới page : http://www.oracle.com/technetwork/java/javase/downloads/index.html Tìm Java SE version cuối và Download JDK

  • B2. Click accept để Download và lưu về máy.

  • B3. Cài đặt JDK:

2.2. Set Up Eclipse

  • B1. Đi đến page: http://www.eclipse.org/downloads.

  • B2. Chọn version phù hợp với cấu hình máy

  • B3: Lưu và extract file. Chạy file .exe

Tạo workspace lưu trữ project:

2.3. Set Up WebDriver Client

  • B1. Đi tới page: http://docs.seleniumhq.org/download/ Tìm tới WebDriver Java client driver. Click “Download”.
  • B2: Extract file. Quan sát thấy có folder “libs” và 2 file zar.

2.4. Configure Eclipse with WebDriver

  • B1. Click file .exe và tạo workplace
  • B2. Tạo project . Vào File-> New->Project

. Chọn Java Project và click Next . Lấy tên project “OnlineStore” và Finish

  • B3. Tạo package . Nhấn chuột phải vào project. Chọn New-> Package.

. Lấy tên package automationFramework rồi Click Finish

  • B4. Tạo Class . Click chuột phải vào package chọn New-> Class

.Lấy tên class FirstTestCase, click Finish, ta được:

  • B5. Add External JARs tới build path của project . Chuột phải project -> Select Properties-> Java build path-> Libraries tab Add External JARs. . Add Selenium-java và các jar trong thư mục libs

. Cấu hình xong hoàn chỉnh như sau:

2.5. First Test Case with FF Browser

  • Script test: . Mở trình duyệt firefox . Mở website www.Store.DemoQA.com . Hiển thị MSG thông báo mở website thành công . Đợi 5s . Đóng trình duyệt Triển khai Script trên Eclipse như sau:
package automationFramework;
 
public class FirstTestCase {
 
	public static void main(String[] args) {
		
		// Create a new instance of the Firefox driver
		WebDriver driver = new FirefoxDriver();
		
        //Launch the Online Store Website
		driver.get("http://www.store.demoqa.com");
 
        // Print a Log In message to the screen
        System.out.println("Successfully opened the website www.Store.Demoqa.com");
 
		//Wait for 5 Sec
		Thread.sleep(5);
        // Close the driver
        driver.quit();
    }
}
  • Chạy testcase . Vào Run -> Run As -> Java Application hoặc Click chuột phải trên code Eclipse và Click Run As -> Java Application.

  • Giải thích Code: . Import thư viện: org.openqa.selenium.WebDriver org.openqa.selenium.firefox.FirefoxDriver . Khởi tạo đối tượng: WebDriver driver = new FirefoxDriver(); . Hiển thị trạng thái MSG: System.out.println(“Successfully, opened the website www.Store.Demoqa.com”); . Trạng thái tạm thời delay thực hiện script: Thread.sleep(5); . Comment: //

1. Data Driven Technique with Apache POI (EXCEL)

1.1. Download Apache POI

  • B1. Đi tới page: http://poi.apache.org/

  • B2. Tìm đến version cuối. Click Available Downloads

  • B3. Click trên zip để download:

Follow:

  • B4. Extract file và sử dụng.

1.2. Add Apache POI

Add Apache POI Jar tới thư viện của Project

  • B1. Chuột phải project-> Build Path-> Configure Build Path

  • B2. Click Add External JARS-> click chọn file zar từ folder

Add từ hết các folder trong hình.

1.3. Test Case with Excel

Demo theo dõi : http://toolsqa.wpengine.com/selenium-webdriver/data-driven-testing-excel-poi/

1.4. Đợi đối tượng UI hoặc sự kiện với Selenium WebDriver

Trong kiểm thử tự động, đôi khi tốc độ của công cụ kiểm thử tự động nhanh hơn tốc độ của ứng dụng cần kiểm thử (AUT/SUT) dẫn đến việc thực thi kiểm thử của chúng ta thất bại (Failed). Hầu hết các công cụ kiểm thử tự động đều hỗ trợ cho chúng ta cách để có thể chờ đợi một đối tượng UI hoặc một sự kiện của đối tượng UI xảy ra. Selenium WebDriver cung cấp cho chúng ta hai phương thức để làm việc này: Explicit (công khai)Implicit (ngầm).

  1. Chờ đợi Implicit Chờ ngầm là việc sử dụng một thời gian nhất định để Selenium WebDriver cố gắng tìm một đối tượng UI trong trường hợp đối tượng UI không xuất hiện ngay lập tức. Giá trị mặc định là 0 giây, và giá trị này được gắn kèm với đối tượng IWebDriver. Một khi được thiết lập, giá trị này sẽ bắt đầu ảnh hưởng đến toàn bộ vòng đời của đối tượng IWebDriver, cho đến khi được thiết lập giá trị mới hoặc kết thúc đối tượng IWebDriver. Sau khi thiết lập giá trị này, trong các đoạn mã kiểm thử, chúng ta không cần phải thêm bất kỳ câu lệnh nào nữa. Việc chờ đợi được đối tượng IWebDriver quản lý. Đây cũng là lý do mà chúng ta gọi là chờ “ngầm”             </div>
            
            <div class=
0