CodeGym /Các khóa học /Python SELF VI / Điền vào form: nhập văn bản và nhấn nút

Điền vào form: nhập văn bản và nhấn nút

Python SELF VI
Mức độ, Bài học
Có sẵn

1. Giới thiệu về tương tác với các phần tử form

Các form trên trang web - đó là nơi phép thuật tương tác bắt đầu. Hãy tưởng tượng form như một bảng điều khiển bí ẩn cho phép người dùng giao tiếp với hệ thống. Nhưng thay vì đưa ra lệnh cho robot hút bụi, chúng ta cung cấp thông tin cho trang web.

Cách nhập văn bản vào trường văn bản

Đầu tiên hãy cùng thảo luận về cách Selenium cho phép chúng ta nhập văn bản vào các trường văn bản. Điều này được thực hiện bằng cách sử dụng phương thức send_keys(). Hãy cùng nhau tìm hiểu từng bước nhé.

Quan trọng: các ví dụ dưới đây dùng cú pháp Selenium 3. Trong Selenium 4, các phương thức find_element_by_* đã bị loại bỏ (hoàn toàn kể từ phiên bản 4.3.0): thay vào đó là phương thức đa năng find_element() nhận một chiến lược từ lớp By. Vì vậy sau mỗi ví dụ đều có bản Selenium 4 tương ứng.

Quan trọng: tham số executable_path đã bị loại khỏi hàm khởi tạo của các driver trong Selenium 4.10 — đường dẫn tới driver giờ được truyền qua đối tượng Service.

Python

from selenium import webdriver

# Đặt đường dẫn tới web-driver, đây là đường dẫn tới bản sao webdriver của bạn
driver = webdriver.Chrome(executable_path='path/to/chromedriver')

# Mở trang web
driver.get('http://example.com/login')

# Tìm trường nhập (ví dụ, theo id) và nhập văn bản
username_field = driver.find_element_by_id('username')
username_field.send_keys('tai_khoan_cua_toi')

password_field = driver.find_element_by_id('password')
password_field.send_keys('mat_khau_sieu_bi_mat_cua_toi')

Vẫn đoạn mã đó, viết bằng Selenium 4:

Python

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service

# Đặt đường dẫn tới web-driver, đây là đường dẫn tới bản sao webdriver của bạn
service = Service('path/to/chromedriver')
driver = webdriver.Chrome(service=service)

# Mở trang web
driver.get('http://example.com/login')

# Tìm trường nhập (ví dụ, theo id) và nhập văn bản
username_field = driver.find_element(By.ID, 'username')
username_field.send_keys('tai_khoan_cua_toi')

password_field = driver.find_element(By.ID, 'password')
password_field.send_keys('mat_khau_sieu_bi_mat_cua_toi')

Trong ví dụ đơn giản này, chúng ta mở trang, sau đó tìm các phần tử nhập liệu bằng ID. Sau đó, chúng ta sử dụng phương thức send_keys() để truyền văn bản vào các trường form. Dễ dàng như copy-paste lên một cấp độ mới!

Thủ thuật quan trọng để điền vào trường văn bản

Nếu bạn thấy rằng form hoạt động kỳ lạ, có thể đã có sẵn văn bản trong trường. Trước khi nhập văn bản mới, hãy xoá văn bản cũ bằng phương thức clear().

Python

username_field.clear()
username_field.send_keys('gia_tri_moi')

Thủ thuật nhỏ này sẽ cứu bạn khỏi những cơn đau đầu không đáng có, thật đấy!

2. Nhấn nút

Bây giờ, khi mà các trường nhập đã được điền, đến lúc nhấn nút, ví dụ như để gửi form. Với Selenium, điều này được thực hiện bằng cách sử dụng phương thức click(). Tương tự như cách bạn nhấn nút "Xem thêm meme", nhưng bằng code.

Python

# Tìm nút theo tên và nhấn
login_button = driver.find_element_by_name('login')
login_button.click()

Vẫn đoạn mã đó, viết bằng Selenium 4:

Python

# Tìm nút theo tên và nhấn
login_button = driver.find_element(By.NAME, 'login')
login_button.click()

Và thế là, script Selenium của chúng ta trở thành một bậc thầy nhấp chuột, giỏi hơn cả việc nhấn nút "Lựa chọn" trong game!

Ví dụ sử dụng

Hãy xem xét một ví dụ kết hợp việc sử dụng các phương thức send_keys()click() để điền vào và gửi form đăng ký.

Python

# Mở trang đăng ký
driver.get('http://example.com/register')

# Điền vào form đăng ký
driver.find_element_by_id('first_name').send_keys('Nguyễn')
driver.find_element_by_id('last_name').send_keys('Văn A')
driver.find_element_by_id('email').send_keys('nguyen@example.com')
driver.find_element_by_id('password').send_keys('matKhauSieuBiMat123')

# Nhấn nút "Đăng ký"
register_button = driver.find_element_by_css_selector('.register-button')
register_button.click()

Vẫn đoạn mã đó, viết bằng Selenium 4:

Python

# Mở trang đăng ký
driver.get('http://example.com/register')

# Điền vào form đăng ký
driver.find_element(By.ID, 'first_name').send_keys('Nguyễn')
driver.find_element(By.ID, 'last_name').send_keys('Văn A')
driver.find_element(By.ID, 'email').send_keys('nguyen@example.com')
driver.find_element(By.ID, 'password').send_keys('matKhauSieuBiMat123')

# Nhấn nút "Đăng ký"
register_button = driver.find_element(By.CSS_SELECTOR, '.register-button')
register_button.click()

Ví dụ đơn giản này cho thấy cách bạn có thể tự động hoá quá trình đăng ký trên trang web. Điều này có thể hữu ích cho việc kiểm tra form đăng ký và mô phỏng hoạt động của người dùng.

3. Xử lý các form khó tính

Đôi khi các trang web thích đùa giỡn với bạn. Bạn nhấn nút, và chẳng có gì xảy ra. Hoặc tệ hơn - trang báo lỗi. Hãy cùng thảo luận về một số vấn đề phổ biến và cách giải quyết chúng.

Làm việc với các phần tử động

Đôi khi, các phần tử trên trang không tải ngay lập tức. Trong trường hợp này, script của bạn có thể cố gắng tương tác với phần tử trước khi nó được tải đầy đủ. Giống như việc bắt đầu làm món trứng ốp-la trước khi lấy trứng ra khỏi tủ lạnh.

Để tránh những trò đùa này, hãy sử dụng chờ đợi. Selenium cho phép bạn chờ đợi cho đến khi phần tử sẵn sàng:

Python

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Chờ cho đến khi phần tử có thể click, sau đó click
register_button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, '.register-button'))
)
register_button.click()

Với WebDriverWait, bạn có thể yêu cầu Selenium chờ cho đến khi phần tử sẵn sàng tác động. Điều này làm tăng đáng kể độ tin cậy của script của bạn.

Tương tác với các phần tử ẩn

Một số phần tử trên trang có thể bị ẩn - ví dụ như các nút ẩn hoặc các trường form. Điều này có thể gây lỗi khi cố gắng tương tác. Trong trường hợp này, bạn có thể làm cho phần tử hiển thị bằng JavaScript:

Python

driver.execute_script("arguments[0].style.visibility='visible';", hidden_element)
hidden_element.click()

Phương pháp này cho phép bạn tương tác với các phần tử bị ẩn vì một lý do nào đó.

4. Áp dụng thực tế: tự động hóa form

Bây giờ, khi chúng ta đã hiểu cách tương tác với các form, hãy tưởng tượng những nơi chúng ta có thể áp dụng điều này vào đời sống thực.

Sếp của bạn quyết định rằng mọi người phải điền vào báo cáo hàng ngày thông qua form trên web. Và tất nhiên, bạn muốn tự động hóa một chút quá trình nhàm chán này. Với Selenium, bạn có thể tạo script tự động điền và gửi báo cáo của bạn mỗi ngày.

Ví dụ tự động hóa báo cáo

Hãy tưởng tượng rằng chúng ta có một trang web với form báo cáo hàng ngày. Form gồm các trường cho tên của bạn, phòng ban và báo cáo công việc đã hoàn thành. Hãy tự động hóa điều này:

Python

driver.get('http://example.com/daily_report')

# Điền vào form báo cáo
driver.find_element_by_id('name').send_keys('Nguyễn Thị Thu An')
driver.find_element_by_id('department').send_keys('Công nghệ')
driver.find_element_by_id('report').send_keys('Hôm nay đã sửa mọi lỗi!')

# Gửi form
submit_button = driver.find_element_by_id('submit')
submit_button.click()

Vẫn đoạn mã đó, viết bằng Selenium 4:

Python

driver.get('http://example.com/daily_report')

# Điền vào form báo cáo
driver.find_element(By.ID, 'name').send_keys('Nguyễn Thị Thu An')
driver.find_element(By.ID, 'department').send_keys('Công nghệ')
driver.find_element(By.ID, 'report').send_keys('Hôm nay đã sửa mọi lỗi!')

# Gửi form
submit_button = driver.find_element(By.ID, 'submit')
submit_button.click()

Script như thế này có thể tiết kiệm rất nhiều thời gian quý báu và giảm thiểu sai sót của con người. Hãy nhớ rằng, đối với các form phức tạp, bạn cần kiểm tra mỗi bước và dự tính các lỗi có thể xảy ra.

Vậy là chúng ta đã kết thúc bài giảng hôm nay! Hôm nay chúng ta đã học cách nhập văn bản vào các trường form và nhấn nút như một hệ thống biểu mẫu trực tuyến, đem đến cho bạn sức mạnh mạnh mẽ để tự động hóa tương tác với trang web.

Tiếp tục trải nghiệm với Selenium và đồng hành cùng chúng tôi để tìm hiểu thêm cách biến trình duyệt của bạn thành một cỗ máy tự động thực thụ!

1
Nhiệm vụ
Python SELF VI, mức độ, bài học
Đã khóa
Nhập văn bản vào biểu mẫu và xóa
Nhập văn bản vào biểu mẫu và xóa
2
Nhiệm vụ
Python SELF VI, mức độ, bài học
Đã khóa
Tự động điền form và nhấn nút
Tự động điền form và nhấn nút
3
Nhiệm vụ
Python SELF VI, mức độ, bài học
Đã khóa
Xử lý các form thay đổi động
Xử lý các form thay đổi động
4
Nhiệm vụ
Python SELF VI, mức độ, bài học
Đã khóa
Tự động hóa việc điền báo cáo hàng ngày
Tự động hóa việc điền báo cáo hàng ngày
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION