SƠ LƯỢC VỀ SELENIUM WEBDRIVER

1. Tổng quan về selenium

Đã có rất nhiều bài viết trong blog này giới thiệu cơ bản về selenium và các thành phần của nó, vì vậy tôi xin phép được bỏ qua phần này. Nếu bạn chưa biết những kiến thức cơ bản về selenium nói chung, xin click vào đây để đọc và tìm hiểu.

2. Selenium WebDriver

  • Tính năng chính trong Selenium 2.0 là việc tích hợp WebDriver API. Selenium WebDriver được thiết kế để mang đến một giao diện lập trình đơn giản hơn và giải quyết một số hạn chế trong Selenium- RC API (Một phần khác của Selenium có thể coi là phiên bản tiền thân của selenium WebDriver)
  • Selenium WebDriver cho phép chúng ta sử dụng một trong số các ngôn ngữ lập trình như HTML, Java, .Net, Perl, Ruby… để tạo kịch bản test (Test Case) kết hợp với sử dụng các điều kiện, vòng lặp… khiến cho test script trở nên chính xác hơn.
  • Selenium WebDriver được phát triển tốt hơn để hỗ trợ cho các trang web động ( Những trang web mà phần tử trong nó có thể thay đổi ngay cả khi trang đó không được tải lại) Mục đích của WebDriver là hỗ trợ cho các vấn đề về kiểm thử web-app hiện nay.

3. So sánh WebDriver và Selenium RC

a. Cấu trúc: Cấu trúc của WebDriver đơn giản hơn Selenium RC

  • WebDriver kiểm soát trình duyệt từ cấp độ OS. Tất cả những gì chúng ta cần khi sử dụng WebDriver cho công việc kiểm thử là tập lệnh Selenium và một trình duyệt để thực hiện các lệnh trên. WebDriver_Architecture.jpg

Ngược lại, Selenium RC có cấu trúc phức tạp hơn rất nhiều. Cụ thể như sau:

  • Trước khi bắt đầu thực hiện kiểm thử, chúng ta phải chạy được một ứng dụng riêng biệt được gọi là Selenium-RC Server. Đây là một ứng dụng hoạt động như một trạm trung gian giữa các selenium command và trình duyệt.
  • Khi chúng ta bắt đầu thực hiện kiểm thử, Selenium-RC Server (sau đây sẽ gọi tắt là Server) sẽ truyền một chương trình Javascript gọi là Selenium Core vào trong trình duyệt. Selenium Core sẽ nhận chỉ thị được đưa ra bởi server (Các chỉ thị được hình thành khi chạy các selenium command)
  • Tiếp theo Selenium Core sẽ thực hiện các chỉ thị này như một lệnh Javascript.
  • Lúc này, trình duyệt mới nhận được các lệnh từ Selenium Core và phản hồi lại phía Server.
  • Cuối cùng server mới trả về kết quả cho chúng ta. Như vậy thay vì việc trực tiếp thực hiện và nhận phản hồi từ trình duyệt như một end-user thông thường, khi sử dụng Selenium RC chúng ta phải qua rất nhiều bước trung gian. Để mô tả rõ hơn cho quy trình này, xin hãy xem hình dưới đây: SeleniumRC_Architecture.jpg

b. Tốc độ

Như chúng ta đã thấy, từ cấu trúc hoạt động được mô tả như ở trên, chắc chắn tốc độ thực thi và nhận phản hồi từ trình duyệt khi sử dụng WebDriver sẽ nhanh hơn vì nó thực hiện mọi hành động trực tiếp với trình duyệt còn Selenium-RC thì phải thông qua trạm trung gian và mất thời gian hơn cho việc chuyển đổi nên thời gian để nhận phản hồi từ trình duyệt sẽ dài hơn.

c. Sự tương tác thực tế

Webdriver có tính tương tác gần với thực tế hơn vì nó thực hiện các hành động trực tiếp với trình duyệt giống như các end-user trong thực tế. Còn Selenium-RC thì không như vậy, khi sử dụng Selenium-RC, cái trực tiếp tương tác với trình duyệt là Selenium Core và vì vậy sẽ có một số trường hợp kết quả trả về sai so với thực tế. Ví dụ, có một trường trên trang web bị vô hiệu hóa, thực tế end-user không thể nhập bất cứ dữ liệu nào vào trong trường đó. Yêu cầu của chúng ta là phải kiểm tra xem thực tế trường đó đã bị vô hiệu hóa hay chưa?

  • TH1: sử dụng WebDriver, kết quả trả về là không nhập được dữ liệu vào trường đang kiểm tra.
  • TH2: Sử dụng Selenium-RC, một số kết quả trả về cho thấy vẫn có trường hợp cho phép nhập dữ liệu vào trường đang vô hiệu hóa.

4. Cách khởi tạo một Selenium WebDriver project

Cài đặt Selenium có nghĩa là thiết lập một project và chúng ta có thể viết một chương trình sử dụng Selenium. Tuy nhiên cách thực hiện như thế nào còn phụ thuộc vào ngôn ngữ lập trình và môi trường phát triển của từng đối tượng. Sau đây sẽ là hướng dẫn cho một số ngôn ngữ thông thường.

a. Java

Cách dễ nhất để thiết lập Selenium 2.0 Java project là sử dụng Maven. Maven sẽ tải về java bindings ( thư viện java client của selenium 2.0) và tất cả những phần liên quan. Sau đó nó sẽ tạo cho chúng ta một project sử dụng file maven pom.xml (project configuration). Sau đó chúng ta có thể import maven project vào IDE or Eclipse. Đầu tiên, tạo một thư mục để chứa các file của Selenium project. Sau đó, để sử dụng Maven, chúng ta cần một file pom.xml. Có thể dùng text editor để tạo file này. File pom.xml sẽ giống như dưới đây (Chi tiết về file pom.xml sẽ được giải thích ở một bài viết khác)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>MySel20Proj</groupId>
        <artifactId>MySel20Proj</artifactId>
        <version>1.0</version>
        <dependencies>
            <dependency>
                <groupId>org.seleniumhq.selenium</groupId>
                <artifactId>selenium-java</artifactId>
                <version>2.42.2</version>
            </dependency>
            <dependency>
                <groupId>com.opera</groupId>
                <artifactId>operadriver</artifactId>
            </dependency>
        </dependencies>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>com.opera</groupId>
                    <artifactId>operadriver</artifactId>
                    <version>1.5</version>
                    <exclusions>
                        <exclusion>
                            <groupId>org.seleniumhq.selenium</groupId>
                            <artifactId>selenium-remote-driver</artifactId>
                        </exclusion>
                    </exclusions>
                </dependency>
            </dependencies>
        </dependencyManagement>
</project>

Lưu ý: Đảm bảo phiên bản maven đang sử dụng là mới nhất. Tiếp theo, từ cửa sổ cmd. CD tới project và chạy maven như dưới đây:

mvn clean install Nó sẽ download selenium và những phần liên quan và add chúng vào project. Cuối cùng, import project vào môi trường phát triển của chúng ta. Để tìm hiểu về cách import maven project vào Eclipse, hãy click vào đây.

b. C#

Để thêm selenium vào project, cách đơn giản nhất là tải file selenium-dotnet.zip mới nhất từ https://code.google.com/p/selenium/downloads/list. Trong trường hợp sử dụng windows Vista hoặc cao hơn thì cần mở khóa trước khi giải nén theo trình tự như sau: Click chuột phải vào tập tin –> Chọn “Properties” –> Click “Unblock”–> Click “OK” Sau đó giải nén tập tin và add tất cả các file trong đó vào Visual Studio hoặc môi trường phát triển mà chúng ta đang sử dụng c. Python Để add Selenium vào Python, chạy câu lệnh sau trong cmd:

pip install selenium d. Ruby Để add Selenium vào Python, chạy câu lệnh sau trong cmd:

gem install selenium-webdriver Bài viết trên có sử dụng thông tin từ trang chủ của Selenium. Nếu bạn muốn tìm hiểu thêm, hãy truy cập vào link sau: http://www.seleniumhq.org/