BỘ CÔNG CỤ SELENIUM – WEBDRIVER TRONG VIỆC KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp sinh bộ kiểm thử tự động cho kiểm thử giao diện ứng dụng web 001 (Trang 22 - 27)

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT

2.4. BỘ CÔNG CỤ SELENIUM – WEBDRIVER TRONG VIỆC KIỂM THỬ GIAO DIỆN ỨNG DỤNG WEB

Selenium là một tập hợp mạnh mẽ các công cụ hỗ trợ phát triển nhanh chóng của các thử nghiệm tự động hóa cho các ứng dụng Web [6]. Selenium cung cấp một tập phong phú các thử nghiệm chức năng đặc biệt hướng đến các nhu cầu của các

thử nghiệm trong một ứng dụng Web. Các hoạt động này là rất linh hoạt, cho phép nhiều tùy chọn cho vị trí các thành phần giao diện và so sánh kết quả thử nghiệm dự kiến sẽ chống lại hành vi ứng dụng thực tế.

2.4.1. Tổng quan về Selenium

Selenium ra đời năm 2004 bởi Jason Huggin. Ông đã phát triển một thƣ viện Javascript điều khiển tương tác với các trang, cho phép chạy lại kiểm thử đối với nhiều trang. Cuối cùng thƣ viện này đã trở thành Selenium – Core nền tảng của các chức năng Selenium Remote Control (RC) và Selenium IDE. Selenium RC là sự đột phá vì không có sản phẩm nào cho phép bạn kiểm soát một trình duyệt từ một ngôn ngữ lập trình.

Năm 2006, Stimon Stewart là một kỹ sƣ tại Google bắt đầu làm việc với một dự án có tên là Webdriver. Ông ấy muốn có một công cụ kiểm tra trực tiếp với trình duyệt bằng cách sử dụng phương pháp tự nhiên cho trình duyệt và hệ điều hành do đó tránh đƣợc hạn chế của Javascript Sandbox.

Năm 2008 đánh dấu sự kết hợp của Selenium và Webdriver. Selenium có cộng đồng lớn và hỗ trợ thương mại nhưng Web Driver là một công cụ của tương lai. Việc kết hợp hai công cụ này cung cấp tập hợp các tính năng chung cho nhiều người sử dụng và lợi ích trong tự động hóa kiểm thử.

2.4.2. Selenium-RC (Remote Control)

Selenium-RC cho phép các nhà phát triển tự động hóa kiểm thử sử dụng một ngôn ngữ lập trình, nó cho tính linh hoạt tối đa và mở rộng trong việc phát triển lôgic thử nghiệm. Ví dụ, nếu trình ứng dụng trả về một tập kết quả của việc kiểm tra, và nếu chương trình thử nghiệm tự động cần chạy thử nghiệm trên mỗi phần tử trong tập hợp kết quả, hỗ trợ lặp đi lặp lại. Các ngôn ngữ lập trình có thể đƣợc sử dụng để chuyển đổi thông qua việc tập hợp kết quả, kêu gọi Selenium lệnh chạy thử nghiệm trên mỗi mục.

Selenium-RC cung cấp một API (Application Programming Interface) và thƣ viện cho mỗi ngôn ngữ đƣợc hỗ trợ: HTML, Java, C #, Perl, PHP, Python, và Ruby. Khả năng sử dụng Selenium-RC với một ngôn ngữ lập trình bậc cao để phát triển các trường hợp thử nghiệm cũng cho phép thử nghiệm tự động được tích hợp với một dự án xây dựng môi trường tự động.

2.4.3. Selenium 2 (Selenium – Webdriver)

Selenium 2 là hướng tương lai của dự án nó bổ sung mới nhất của công cụ Selenium. Công cụ này cung cấp những tính năng tuyệt vời, bao gồm API định hướng gắn kết hơn và giải quyết các vấn đề tồn tại của các phiên bản trước. Nó hỗ trợ các API Webdriver, cùng với công nghệ Selenium 1 API WebDriver cho sự linh hoạt tối đa trong việc kiểm thử. Ngoài ra, Selenium 2 vẫn chạy Selenium RC 1 của giao diện để tương thích ngược.

2.4.4. Một số Selenium-Webdriver API

2.4.4.1. Một thể hiện của browser driver

Một browser driver (ví dụ nhƣ FirefoxDriver) là một đối tƣợng, đối tƣợng này được coi như đại diện một trình duyệt trong chương trình.

WebDriver ffdriver = new FirefoxDriver();

Từ đây, đối tượng ffdriver sẽ có những phương thức từ đó điểu khiển trình duyệt ở đây là Firefox. Sau khi thực hiện lệnh này, trình duyệt sẽ đƣợc khởi động.

2.4.4.2. Truy cập một trang Web

Điều đầu tiên chúng ta muốn làm với một Webdriver đó là truy cập vào một trang Web, thông thường điều này sẽ được thực hiện qua phương thức:

driver.get("http://www.google.com");

Khi đó trình duyệt sẽ đƣợc tự động truy cập vào địa chỉ đã truyền vào.

2.4.4.3. Định vị các thành phần trên giao diện Web

Tất cả các thành phần trên giao diện Web đều có thể định vị bằng nhiều cách mà Selenium hỗ trợ. Mỗi một thành phần sẽ đƣợc ánh xạ qua một thể hiện của WebElement.

Webdriver sử dụng một phương thức findElement mà tham số của phương thức này là định nghĩa vị trí của element trên trang Web. Có rất nhiều cách để định nghĩa vị trí của một element trên Website trong đó có một số cách phổ biến sau:

Theo ID:

// <div id="coolestWidgetEvah">...</div>

WebElement element = driver.findElement(By.id("id_value"));

Theo Class Name:

// <div class="cheese"><span>Cheddar</span></div>

// <div class="cheese"><span>Gouda</span></div>

List<WebElement> cheeses =

driver.findElements(By.className("cheese"));

Theo Tag Name:

// <iframe src="..."></iframe>

WebElement frame = driver.findElement(By.tagName("iframe"));

Theo Name:

// <input name="cheese" type="text"/>

WebElement cheese = driver.findElement(By.name("cheese"));

Theo Link Text

// <a href="http://www.google.com/search?q=cheese">cheese</a>>

WebElement cheese = driver.findElement(By.linkText("cheese"));

2.4.4.4. Điền các giá trị vào trang Web qua Selenium-Webdriver

Sau khi định vị đƣợc các thành phần trên một Website và ánh xạ chúng với các WebElement, chúng ta có thể thay đổi giá trị hoặc thực hiện các thao tác chuột cũng như các thao tác gõ chữ lên WebElement đó thông qua các phương thức.

// Find the text input element by its name

WebElement element = driver.findElement(By.name("q"));

// Enter something to search for element.sendKeys("Cheese!");

// Now submit the form.

element.submit();

2.4.4.5. Di chuyển giữa các cửa sổ và frame

Một số ứng dụng Web có thể chứa nhiều cửa sổ hoặc frame, Webdriver cung cấp phương thức giúp di chuyển giữa các cửa sổ thông qua tên:

driver.switchTo().window("windowName");

driver.switchTo().frame("frameName");

2.4.4.6. Điều hướng trình duyệt

Sau khi trình duyệt truy cập một trang Web và thực hiện một số sự kiện chuyển sang những trang mới, khi đó chúng ta có thể sử dụng phương thức

navigate() để quay lại một trang trước đó hoặc tới một trang theo tên trình duyệt đã truy cập trước đó.

driver.navigate().to("http://www.example.com");

driver.navigate().forward();

driver.navigate().back();

2.4.4.7. Cookies

Webdriver còn cho phép thay đổi cả cookie khi truy cập các trang Web // set the cookie. This one's valid for the entire domain

Cookie cookie = new Cookie("key", "value");

driver.manage().addCookie(cookie);

// You can delete cookies in 3 ways // By name

driver.manage().deleteCookieNamed("CookieName");

// By Cookie

driver.manage().deleteCookie(loadedCookie);

// Or all of them

driver.manage().deleteAllCookies();

Nhƣ vậy trên đây chúng ta đã tìm hiểu thƣ viện selenium cũng nhƣ một số Webdriver API thông dụng, chúng ta có thể sử dụng chúng để sinh ra các mã chạy tự động các ca kiểm thử đƣợc sinh ra từ quá trình sinh ca kiểm thử sẽ đƣợc trình bày ở các chương sau.

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp sinh bộ kiểm thử tự động cho kiểm thử giao diện ứng dụng web 001 (Trang 22 - 27)

Tải bản đầy đủ (PDF)

(63 trang)