1. Mở trang web: những bước đầu tiên
Nếu bạn từng mơ ước trở thành bậc thầy của các trang web, thì bạn đã ở đúng buổi học rồi đó. Hôm nay mình sẽ cùng nhau học cách mở trang web bằng Selenium và tìm hiểu cách tương tác với chúng. Hãy tưởng tượng bạn đang điều khiển trình duyệt như một nhạc trưởng, chỉ khác là dàn nhạc này chính là internet, và bản nhạc là mã Python. Bắt đầu buổi hòa nhạc nào!
Trước khi chúng ta có thể tương tác với trang web, mình phải mở nó trước, đúng không? Giống như bạn cần đến thư viện trước khi tìm sách. Trong Selenium, mở trang web được thực hiện bằng web driver của trình duyệt. Ở đây giả sử bạn đã cài đặt Selenium và web driver phù hợp (như ChromeDriver hoặc GeckoDriver). Nếu bạn đã tham gia bài học trước, bạn chắc chắn đã biết cách làm điều này rồi. Nếu chưa, nhớ quay lại và đọc lại bài học trước nhé.
Hãy xem qua ví dụ đơn giản để mở một trang web:
from selenium import webdriver
# Tạo một đối tượng web driver cho Chrome
driver = webdriver.Chrome()
# Mở trang web
driver.get('https://www.example.com')
# In tiêu đề của trang ra console
print(driver.title)
# Đóng trình duyệt
driver.quit()
Chuyện gì xảy ra trong mã:
- Import webdriver: Đây là trái tim của Selenium, giúp điều khiển trình duyệt.
- Tạo driver: Tạo một đối tượng driver cho Chrome. Nó có thể là bất kỳ trình duyệt nào mà bạn có driver.
-
Mở trang: Phương thức
get()
tải trang Web từ URL đã cho. -
Lấy tiêu đề: Với
driver.title
, bạn có thể in tiêu đề của trang hiện tại. -
Đóng trình duyệt: Sử dụng phương thức
quit()
để kết thúc phiên làm việc.
Vậy là mình đã mở được trang web đầu tiên! Đây là bước đầu tiên dẫn tới việc chinh phục thế giới... à nhầm, mình muốn nói là tự động hóa!
2. Điều hướng và làm việc với tab
Chỉ mở trang thôi thì chưa đủ. Nhiều lúc mình cần di chuyển giữa các trang hoặc thậm chí mở nhiều tab. Hãy tưởng tượng bạn là một nhà du hành có thể dịch chuyển tức thời giữa các địa điểm. Với Selenium, bạn có thể làm được điều đó.
Điều hướng giữa các trang
Chuyển từ một trang này sang một trang khác đơn giản như việc mở:
# Chuyển đến một trang khác
driver.get('https://www.example.org')
# Sử dụng phương thức back() để quay lại trang trước
driver.back()
# Sử dụng phương thức forward() để đi tới trang tiếp theo
driver.forward()
Làm việc với tab
Làm sao để mở một tab mới? Giống như bạn mang theo laptop tới thư viện ở các thành phố khác nhau vậy!
# Mở một tab mới và chuyển sang đó
driver.execute_script("window.open('https://www.example.com', '_blank');")
driver.switch_to.window(driver.window_handles[1])
# Quay trở lại tab đầu tiên
driver.switch_to.window(driver.window_handles[0])
Giải thích:
-
execute_script()
: Dùng để thực thi mã JavaScript trong trình duyệt. Ở đây mình mở một tab mới. -
switch_to.window()
: Phương thức này cho phép chuyển đổi giữa các tab. Mình dùngwindow_handles
để truy cập danh sách tất cả các tab đã mở.
3. Tương tác với trang web
Bây giờ khi mình đã học cách mở và điều hướng trang web, hãy cùng chuyển qua việc tương tác trực tiếp với chúng — như một lập trình viên thực thụ! Điều này giống như học nhảy cùng từng trang web và làm điều đó một cách điêu luyện.
Giao diện tương tác
Hãy đến với ví dụ về cách tương tác với các phần tử trên trang. Ví dụ tìm kiếm một ô nhập văn bản và nhập dữ liệu:
# Tìm phần tử theo tên của nó
search_box = driver.find_element_by_name('q')
# Nhập văn bản vào ô nhập tìm kiếm
search_box.send_keys('Selenium Python')
# Tìm nút tìm kiếm và nhấp vào đó
submit_button = driver.find_element_by_name('btnK')
submit_button.click()
Giải thích:
-
find_element_by_name()
: Phương thức này tìm phần tử dựa theo tên. Ở đây mình tìm ô nhập cho tìm kiếm. -
send_keys()
: Dùng để nhập văn bản vào phần tử. -
click()
: Dùng để thực hiện nhấn vào phần tử, ví dụ nút bấm.
Các phương thức bổ sung
Để làm việc phức tạp hơn với các phần tử, có rất nhiều phương thức khác. Xem qua tài liệu Selenium để học kỹ hơn. Ở đây chúng ta sẽ điểm qua vài phương thức cơ bản.
-
find_element_by_id()
: Tìm phần tử bằng ID. -
find_element_by_class_name()
: Tìm phần tử bằng tên class. -
find_element_by_css_selector()
: Tìm phần tử bằng CSS selector.
Bây giờ bạn đã có thể mở và khám phá trang web như một nhà thám hiểm thực thụ! Đừng ngại thử nghiệm và học hỏi thêm. Có câu "sai lầm là bậc thang dẫn đến thành công", đặc biệt nếu bạn chắc chắn mã của mình đáng tin cậy và đã được kiểm tra kỹ lưỡng!
Lỗi thường gặp
Làm việc với Selenium có thể giống như đi trên một bãi mìn nếu bạn không biết những chỗ nguy hiểm. Một trong những lỗi phổ biến nhất là quên kết thúc phiên làm việc trình duyệt. Điều này có thể dẫn đến các tiến trình trình duyệt bị treo trong bộ nhớ. Luôn sử dụng
driver.quit()
ở cuối script của bạn.
Một vấn đề đau đầu khác khi lập trình với Selenium là sự thay đổi cấu trúc trang web. Nếu một phần tử được tìm kiếm bằng selector và nhà phát triển trang thay đổi cấu trúc HTML, script của bạn sẽ đột ngột không chạy được. Như bạn đang đứng trước cánh cửa bị khóa khi định bước vào. Quan trọng là viết mã linh hoạt và cập nhật thường xuyên để thích nghi với thay đổi trên trang web.
GO TO FULL VERSION