Thứ Hai, 10 tháng 8, 2020

Selenium là công nghệ gì, và Lê Dương đang làm gì...

👆👆👆,

Chào các bạn trẻ, hôm nay, tôi xin giới thiệu Lê Dương, một đồng tác của bài viết này, và những bài viết khác trong tương lai. Lê Dương là ông anh thời học ở NUS. Anh ấy nghiên cứu về Vật lí học (Physics), và bây giờ anh ấy là Princial Machine Learning Researcher ở Cyberlogitec, một công ty Hàn Quốc có trụ sở ở Hà Nội. Anh ấy từng là một người làm thí nghiệm mô phỏng vật lý (kiểu như thí nghiệm của trung tâm CERN, Thuỵ Sỹ). Anh Dương đã từng viết code Fortran trong phòng thí nghiệm, và anh ấy bây giờ chuyển sang làm IT.

Figure 0: Anh Lê Dương (ngoài cùng bên phải) và những người cộng sự cùng lab tại thời làm R&D ở Liege, Bỉ.

Selenium

    Trong bài viết, chúng tôi giới thiệu Selenium, một công nghệ kiểm thử webapp tự động. Công nghệ này giúp bạn kiểm thử các web có hệ thống và tiến tới kiểm thử tự động. Selium là một tập hợp của những công cụ (tool) và thư viện (libary) để hỗ trợ sự tự động hoá của trình duyệt web (web browsers). Sự tự động hoá ở đây được hiểu là sự giả lập trình duyệt, gửi câu lệnh đến trình duyệt web, từ đó mình có thể tự động hoá những phép kiểm thử (test cases) của webapp. Sau đây là một quote từ những nhà phát triển công nghệ Selenium 👀.

"It provides extensions to emulate user interaction with browsers, a distribution server for scaling browser allocation, and the infrastructure for implementations of the W3C WebDriver specification that lets you write interchangeable code for all major web browsers."

Cốt lỗi của công nghệ Selenium là webdriver, một tài liệu nhằm chuẩn hoá quá trình phát triển webdriver.

1. Ba thành phần chính của Selenium
  • WebDriver: dùng browser automation APIs được phát triển bởi các trình duyệt Chrome, Firefox,... để điều khiển các trình duyệt và chạy các phép kiểm thử. Selenium webdriver được khuyên dùng bởi tổ chức W3C.
  • IDE: là công cụ được phát triển bởi Selenium để viết và chạy Selenese script. Nó được phát triển là một extension của Chrome and Firefox. Ngoài ra, nó còn được sử dụng để record những hành động của người dùng trên một trang web.
Figure 2: Công cụ tạo test case trong hệ thống sinh thái Selenium.
  • Grid: Selenium grid là một công cụ cho phép bạn chạy các phép kiểm thử (test cases) trên nhiều máy tính khác nhau với kết hợp các loại trình duyệt và hệ điều hành khác nhau.

2. Ví dụ

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import presence_of_element_located

#This example requires Selenium WebDriver 3.13 or newer
with webdriver.Firefox() as driver:
    wait = WebDriverWait(driver, 10)
    driver.get("https://google.com/ncr")
    driver.find_element(By.NAME, "q").send_keys("cheese" + Keys.RETURN)
    first_result = wait.until(presence_of_element_located(By.CSS_SELECTOR, "h3>div"))
    print(first_result.get_attribute("textContent"))

Algorithm 1: Đoạn code mẫu để dùng Selenium từ Python Selenium client API.

Giải thuật 1 đưa ra  một ví dụ về việc dùng Python Selenium Client API để khởi tạo trình duyệt Firefox, gửi một search request tới google.com với cụm từ "cheese", sau đó chờ google service trả về kết quả, in ra kết quả.

3. Ứng dụng thực tế

Figure 3: WebDriver và hệ thống sinh thái Selenium.
Các nhà phát triển có dùng Selenium để tạo ra các phép thử cho sản phẩm web của họ. Ngoài ra, họ còn dùng nó để ghi những tương tác giữa người dùng và các trình duyệt, để phân tích dữ liệu người dùng tương tác, để thiết kế UI/UX tốt hơn.
Nếu các bạn có thời gian hãy đọc W3C WebDriver specification.

Khách hàng

Qua bài viết này, chúng tôi cũng muốn giới thiệu với các bạn quy trình hoạt động tư vấn của nhóm chúng tôi như thế nào. Nhóm chúng tôi gồm những người có nhiều kinh nghiệm khác nhau nên sẽ có kiến thức, kinh nghiệm bao quát hơn. Ví dụ, anh Lê Dương có kinh nghiệm về physics sẽ giúp nhóm có kinh nghiệm hơn trong vấn đề tính toán khoa học (scientific computing), học máy (machine learning), tôi thì chuyên về mảng cloud, AI, data science. Nhưng quan trọng nhất, chúng tôi phải xác định hiểu được vấn đề của khách hàng đặt ra trước khi suy nghĩ giải pháp cho vấn đề. Thấu hiểu khách hàng là phương châm trên hết của nhóm chúng tôi. Đồng thời, chúng tôi cũng kết hợp những am hiểu công nghệ và am hiểu văn hoá địa phương để đưa ra những giải pháp cụ thể và phù hợp với khách hàng.

    Ví dụ, khi chúng tôi nhận được yêu cầu về nghiên cứu công nghệ Selenium. Chúng tôi đã đọc tài liệu về Selenium (wiki, documentation, lịch sử) kết hợp với kinh nghiệm kỹ thuật, và yêu cầu thực tế từ anh Lê Dương.

Các bạn fan hãy bình luận bên dưới, nhất là các fan ở Hà Nội.👇👇👇

🐘🐘🐘

Không có nhận xét nào:

Đăng nhận xét