[Bài 1] Selenium Webdriver là gì?

Đây là bài đầu tiên trong loạt bài về Selenium Webdriver mà mình có ý định viết, mặc dù kiến thức còn nhiều lỗ hổng nhưng mình sẽ cố gắng viết rồi bổ khuyết dần dần. Rất mong được mọi người cho ý kiến.

Mở bài:
Selenium Webdriver (Se driver) là một tool open source giúp việc thực thi các hành động lên trang web một cách tự động, tất nhiên là tùy vào mục đích và yêu cầu của người viết. Se driver hỗ trợ viết script trên nhiều ngôn ngữ khác nhau: Java, C#, python, PHP… nhưng trong series này mình chỉ giới thiệu Se driver qua ngôn ngữ Java, vì mình chỉ biết Java. 😀
Về mặt bản chất, Se driver là một 1 package trong đó có chứa rất nhiều các gói jar, cung cấp các API hay gọi nôm na là thư viện. Vì nó là thư viện nên cách sử dụng nó cũng chả khác gì việc sử dụng nhưng thư viện khác mà Java đã cung cấp sẵn như java.util hay java.lang.

Thân bài:
Hết phần mở bài khó hiểu, mình sẽ đi vào phần thân bài chứa đầy đủ các thông tin để các bạn hiểu cặn kẽ về Selenium Webdriver.
I. Để học và dùng Se driver thì cần những gì?
II. Các script được viết ra bằng Se driver thực thi theo cơ chế nào?
III. Những trang web giúp việc học Selenium trở nên dễ dàng hơn.

I. Để học được Selenium Webdriver thì cần những gì?
1. Máy tính đã cài Java 8 or 9, có sẵn 1 bộ IDE soạn thảo code (mình dùng Eclipse).
2. Biết Java cơ bản (nếu không biết thì học :v)
3. Cài sẵn các add-on Firebug và firepath trên trình duyệt firefox (Update: Firebug đã dừng support, có thể sử dụng extension khác)
4. Trong máy tính có down sẵn các file driver của các trình duyệt (chromedriver, firefoxdriver…)
5. Down sẵn Selenium Webdriver về máy.
—> Sẽ viết một bài hoàn chỉnh về riêng phần này sau.

II. Các script được viết ra bằng Selenium Webdriver thực thi theo cơ chế nào?

–>  test cript viết theo Testcase
1. Để Se driver có thể mô phỏng hành động như click chuột hay điền giá trị, đầu tiên nó phải xác định được vị trí của element (phần tử) trên trang web mà nó sẽ tương tác. (dựa vào các thẻ html)
2. Sau khi đã xác định được vị trí, thì sẽ xác định hành động đối với element đó. (thông qua các API được viết sẵn trong các gói thư viện của Webdriver, như đã nói ở trên)
3. Sau khi hoàn thành 1 list các hành động theo trình tự ( giống như thực hiện với manual test), ta sẽ kiểm tra xem trang web có thực hiện đúng hay không.

Ví dụ: Kiểm tra chức năng login,
1. Ta cần phải xác định được vị trí của các element: Username, Password và Submit Button và nói cho Webdriver biết vị trí của từng thằng.
2. Hành động đối với Username và Password là nhập dữ liệu, ta sẽ dùng các phương thức nhập dữ liệu. Với Submit Button thì ta dùng phương thức mô phỏng Click chuột.
3. Viết câu lệnh kiểm tra xem với dữ liệu nhập vào thì login có thành công hay không bằng cách xem nó có chuyển sang page khác hay vẫn ở lại page Login … Với thao tác bình thường, ta rất dễ có thể kiểm tra được xem Login như thế là Fail hay Pass nhưng với automation, việc này sẽ được check tự động và phải chọn những điểm làm căn cứ để đánh dấu Pass/Fail.

Khi run Script, điều gì sẽ xảy ra?
Khi viết xong script, mình muốn run để xem thử có bao nhiêu TC fail hay pass. Khi run, Se driver sẽ gọi trực tiếp (direct call)  trình duyệt thông qua driver của chính trình duyệt đó (chromedriver, firefoxdriver… có nói ở mục I.4). Sau đó các hành động trên script sẽ được thực thi.

Chi tiết của việc direct call:
–  Với mỗi 1 hành động từ script, một HTTP request sẽ được tạo ra
– HTTP request đó gửi đến browser driver
– Mỗi browser driver sẽ có 1 HTTP server để nhận lấy HTTP request
– Sau khi nhận, HTTP server xác định những bước cần thiết để thực thi hành động phản hồi lại request.
– HTTP server thực thi những bước ở trên
– Sau đó, HTTP server trả lại trạng thái thực hiện những hành động cho client, nơi đang run script.

III. Những trang web giúp học Selenium Webdriver nhanh hơn
–  www.seleniumhq.org
–  http://www.seleniumeasy.com
–  https://automationfc.com/category/selenium/selenium-webdriver/

Kết bài: Đây chỉ mới là bài giới thiệu về công cụ kiểm thử tự động mà nhà nhà nói, người người nói. Sẽ còn rất nhiều điều phải học, phải làm nhưng mình tin là nó không quá khó, kể cả với những người còn kém lập trình như mình. 😀

[Bài 2] Cài đặt môi trường cần thiết cho Selenium Webdriver

6 thoughts on “[Bài 1] Selenium Webdriver là gì?

  1. Nay tìm được trang web của bạn,mình ban đầu là tìm post man.Mặc dù chưa đọc kỹ càng nhưng các mục tiêu đề bố cục bài viết có vẻ rất chi tiết.Sau khi xem thêm các mục trên menu thì lại có thêm selemium mình đang quan tâm quả thật một trang web báu vật với mình.

    Đã lưu lại địa chỉ website từ từ nghiên cứu.

    Cảm ơn bạn đã chịu khó viết lại kiến thức của mình,chân thành cảm ơn.

    • Cảm ơn những lời động viên của bạn. Hi vọng những gì mình viết có thể cung cấp một chút kiến thức cho bạn. 😀

    • mình cũng thấy thế, ban đầu anh chỉ viết mấy bài nên lâu rồi mình ko vào, giờ vào thấy nhiều quá, mình vui lắm

      • Thanks bạn, mình sẽ đi hết cái series WebDriver, tất nhiên là còn phụ thuộc vào kiến thức của mình. Hi vọng bạn vẫn vào blog thường xuyên.

Leave a Reply

Your email address will not be published. Required fields are marked *