SELENIUM WEBDRIVER – Kiểm thử Web-App đơn giản hơn

Để đảm bảo chất lượng sản phẩm trước khi giao đến tay khách hàng không có bất cứ lỗi đáng tiếc nào là hết sức quan trọng. Điều đó thể hiện rõ năng lực cũng như sự chuyên nghiệp của team cũng như công ty bạn. Giám sát chất lượng sản phẩm được chú trọng trong suốt quá trình phát triển. Việc áp dụng các công cụ test tiên tiến giúp quá trình test trở nên tự động, giảm bớt khối lượng công việc cũng như nâng cao chất lượng. Selenium Webdriver là sự lựa chọn đáng tin cậy, tuy nhiên việc tiếp cận, thành thạo cũng mất nhiều thời gian

Trong quá trình làm dự án, từ yêu cầu của khách hàng cũng như mong muốn nâng cao chất lượng sản phẩm, chúng tôi đang và dần tiếp cận với nó như một phương pháp test bắt buộc.

Một vài khó khăn khi bắt đầu tiếp cận nhưng trong quá trình tìm tòi học hỏi cũng như sự giúp đỡ và cả những buổi seminar về selenium webdriver từ chính những QA tài giỏi, xinh đẹp nhưng cũng rất khó tính của Framgia chúng tôi.

Một trang web tôi đã và đang tìm hiểu về selenium muốn giới thiệu với các bạn luôn đó là: http://www.toolsqa.com/selenium-webdriver/. Các bạn có thể không cần đọc bài viết của tôi, chỉ cần vào website trên sẽ thấy rất nhiều ví dụ dễ hiểu, video hướng dẫn. Rất đầy đủ để cho bạn hiểu hơn về nó.

Đôi điều về Selenium Webdriver

Selenium Webdriver kế thừa và phát triển từ Selenium IDE, Selenium Remote Control (RC), Selenium Grid. Selenium Webdriver giải quyết những khó khan về ngôn ngữ, Vậy lý do chọn Selenium Webdriver là gì, xin được chính từ chính website trên:

Vì vậy hôm nay tôi sẽ giới thiệu với các bạn bài viết tổng quan về selenium webdriver gồm những nội dung chính:

1. Hướng dẫn cài đặt

Như đã nói Selenium hỗ trợ rất nhiều ngôn ngữ lập trình, cùng với website giới thiệu bên trên tôi lựa chọn ngôn ngữ lập trình Java và Eclipse để viết test case, Nếu bạn là một dev thì vấn đề sẽ rất dễ dàng, tuy nhiên các bạn QA đang muốn tìm hiểu về selenium webdriver cũng đừng quá lo lắng, rất đơn giản thôi.

Hãy làm các bước với các link kèm theo. Với hình ảnh minh họa và video hướng dẫn ở mỗi bước rất tỉ mỉ và dễ hiểu nên tôi nghĩ rằng mình không thể hướng dẫn bạn dễ hiểu hơn thế.

2. Những lệnh cơ bản

    - findElement();            //Cách lấy giá trị của các thẻ html sử dụng.
    - sendkeys();               //Nhập giá trị cho các ô với.
    - submit();                 //Submit dữ liệu với "

Điều hướng trình duyệt sử dụng:

    - navigate().forward();
    - navigate().back();
    - navigate().refresh();     //Refresh trang.
    - ImplicitlyWait();         //Để chờ các cảnh báo (statements)
    - FluentWait();             //Để xác định tối đa mức thời gian để chờ một điều khiển thực thi.
    - pageLoadTimeout();        //Set thời gian load timeout cho một trang.
    - setScriptTimeout();       //Set thời gian load timeout cho điều khiển javascript.

Nên tránh sử dụng Thread.sleep() vì nếu không sử dụng chính xác có thể làm chậm đi ứng dụng"

Với cấu trúc HTML phức tạp, các thẻ tag lặp lại nhiều và có thể không sử dụng các class hoặc id để findElement là không khả quan. Selenium Webdriver cung cấp findElement(By.xpath()); để tìm kiểm các thẻ tag của html và xử lý nó.

Ví dụ: driver.findElement(By.xpath("".//*[@id='ires']/table/tbody/tr[2]/td[1]"")).getText();"

    -  getCurrentUrl();         //Lấy Url của trang hiện tại.
    - getKeyboard();            //Thao tác với bàn phím.
    - getMouse();               //Thao tác với chuột.
    - getTitle();               //Lấy tiêu đề của trang web hiện tại.
    - getWindowHandle();
    - switchTo();               //Di chuyển giữa các cửa sổ trình duyệt
    - quit();                   //Thoát trình duyệt.

3. Các hàm hỗ trợ

Tối muốn giới thiệu đến các bạn những hàm sẽ giúp ích trong quá trình tạo test-result, làm evidence.

Hàm chụp màn hình

Chụp ảnh của trình duyệt sử dụng, ghi vào file ảnh, để sử dụng được hàm này bạn cần import một số thư viện thao tác với file:

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;

    private static boolean capture(String fileName){
        try {
            WebDriver dr = Monitor.getM().getDriver();
            File f = new File(fileName+".jpg");
            File oFile = ((TakesScreenshot) dr).getScreenshotAs(OutputType.FILE);
            BufferedImage image = ImageIO.read(oFile);
            ImageIO.write(image, "jpg", f);

            return true;
        } catch (Exception e) {
            e.printStackTrace();

            return false;
        }
    }

4. Bonus content

Nếu muốn tìm hiểu sâu hơn về Selenium Webdriver các bạn có thể xem thêm về: