Chuyên mục:
Python
Cập nhật:
17/12/2024
Xử lý với chuột:
Sử dụng Selenium để tự động hóa các hành động cơ bản như di chuột và nhấp chuột, giúp kiểm thử hoặc tự động hóa các tác vụ trên trang web.
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
service_obj = Service("C:/Users/DELL/Desktop/chromedriver-win64/chromedriver.exe")
driver = webdriver.Chrome(service=service_obj)
driver.implicitly_wait(15)
driver.maximize_window()
driver.get("https://rahulshettyacademy.com/AutomationPractice/")
action = ActionChains(driver)
#action.double_click(driver.find_element(By.))
#action.drag_and_drop()
action.move_to_element(driver.find_element(By.ID,"mousehover")).perform()
#action.context_click(driver.find_element(By.LINK_TEXT,"Top")).perform()
action.move_to_element(driver.find_element(By.LINK_TEXT,"Reload")).click().perform()
Giải thích
1. Nhập các thư viện cần thiết:
pythonCopy codefrom selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium import webdriver
: Nhập mô-đunwebdriver
từ Selenium, đây là thành phần chính để điều khiển trình duyệt. Bạn sẽ sử dụngwebdriver
để mở và tương tác với trang web.from selenium.webdriver import ActionChains
: Nhập lớpActionChains
, dùng để mô phỏng các hành động phức tạp của chuột và bàn phím (di chuột, nhấp chuột, kéo và thả, v.v.).from selenium.webdriver.chrome.service import Service
: Nhập lớpService
từ Selenium, cho phép cấu hình trình duyệt Chrome quachromedriver.exe
. Đoạn mã này đặc biệt với hệ điều hành Windows, nơi bạn phải chỉ định đường dẫn củachromedriver.exe
để Selenium có thể giao tiếp với trình duyệt.from selenium.webdriver.common.by import By
: NhậpBy
từ Selenium, là công cụ giúp xác định cách tìm kiếm các phần tử trong DOM của trang web (ví dụ: qua ID, tên, class, v.v.).
2. Khởi tạo đối tượng Service và WebDriver:
pythonCopy codeservice_obj = Service("C:/Users/DELL/Desktop/chromedriver-win64/chromedriver.exe")
driver = webdriver.Chrome(service=service_obj)
service_obj = Service("C:/Users/DELL/Desktop/chromedriver-win64/chromedriver.exe")
:- Tạo một đối tượng
Service
, chỉ định đường dẫn đếnchromedriver.exe
.chromedriver
là trình điều khiển giúp Selenium tương tác với trình duyệt Chrome. Đảm bảo bạn sử dụng phiên bản phù hợp với phiên bản Chrome của mình.
- Tạo một đối tượng
driver = webdriver.Chrome(service=service_obj)
:- Khởi tạo một đối tượng
driver
sử dụngwebdriver.Chrome
, với tham sốservice_obj
đã được cấu hình ở trên. Điều này sẽ khởi động một cửa sổ trình duyệt Chrome.
- Khởi tạo một đối tượng
3. Cấu hình các tùy chọn cho driver:
pythonCopy codedriver.implicitly_wait(15)
driver.maximize_window()
driver.implicitly_wait(15)
:- Cấu hình Selenium để đợi tối đa 15 giây khi tìm kiếm các phần tử trên trang. Nếu phần tử không xuất hiện trong khoảng thời gian này, Selenium sẽ ném ra ngoại lệ
TimeoutException
.
- Cấu hình Selenium để đợi tối đa 15 giây khi tìm kiếm các phần tử trên trang. Nếu phần tử không xuất hiện trong khoảng thời gian này, Selenium sẽ ném ra ngoại lệ
driver.maximize_window()
:- Phóng to cửa sổ trình duyệt khi nó được mở. Điều này giúp dễ dàng nhìn thấy và tương tác với các phần tử trên trang.
4. Truy cập trang web:
pythonCopy codedriver.get("https://rahulshettyacademy.com/AutomationPractice/")
driver.get("https://rahulshettyacademy.com/AutomationPractice/")
:- Truy cập vào URL của trang web "https://rahulshettyacademy.com/AutomationPractice/". Đây là trang web mà Selenium sẽ tự động hóa.
5. Khởi tạo ActionChains:
pythonCopy codeaction = ActionChains(driver)
action = ActionChains(driver)
:- Tạo một đối tượng
ActionChains
, giúp bạn thực hiện các hành động phức tạp (như di chuột, nhấp chuột, kéo và thả) trên trang web mà Selenium đang điều khiển.
- Tạo một đối tượng
6. Di chuột đến phần tử (hover):
pythonCopy codeaction.move_to_element(driver.find_element(By.ID,"mousehover")).perform()
driver.find_element(By.ID, "mousehover")
:- Tìm phần tử có
ID="mousehover"
trên trang web.
- Tìm phần tử có
action.move_to_element(...)
:- Di chuyển chuột đến phần tử tìm được. Phương thức này sẽ mô phỏng hành động "hover" (di chuột qua) lên phần tử đó.
.perform()
:- Thực thi chuỗi hành động. Để hành động di chuột trên phần tử
mousehover
được thực hiện, cần phải gọi.perform()
.
- Thực thi chuỗi hành động. Để hành động di chuột trên phần tử
7. Di chuột và nhấp chuột vào liên kết "Reload":
pythonCopy codeaction.move_to_element(driver.find_element(By.LINK_TEXT,"Reload")).click().perform()
driver.find_element(By.LINK_TEXT, "Reload")
:- Tìm phần tử có liên kết văn bản (link text) là "Reload" trên trang.
action.move_to_element(...)
:- Di chuyển chuột đến phần tử tìm được (liên kết "Reload").
.click()
:- Sau khi di chuột đến phần tử, hành động nhấp chuột sẽ được thực hiện.
.perform()
:- Thực thi hành động di chuột và nhấp chuột vào liên kết "Reload".
8. Các hành động khác đã bị chú thích (commented out):
pythonCopy code# action.double_click(driver.find_element(By.))
# action.drag_and_drop()
# action.context_click(driver.find_element(By.LINK_TEXT,"Top")).perform()
- Các hành động này đã bị chú thích và không thực thi trong đoạn mã này.
action.double_click(...)
: Thực hiện hành động nhấp đúp chuột vào phần tử.action.drag_and_drop()
: Thực hiện hành động kéo và thả (drag and drop) giữa hai phần tử.action.context_click(...)
: Thực hiện nhấp chuột phải vào phần tử được chỉ định (thường dùng để mở menu ngữ cảnh).