18 Xử lý tương tác chuột nâng cao

Chuyên mục: Python
Cập nhật: 17/12/2024
18 Xử lý tương tác chuột nâng cao

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ô-đun webdriver từ Selenium, đây là thành phần chính để điều khiển trình duyệt. Bạn sẽ sử dụng webdriver để mở và tương tác với trang web.
  • from selenium.webdriver import ActionChains: Nhập lớp ActionChains, 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ớp Service từ Selenium, cho phép cấu hình trình duyệt Chrome qua chromedriver.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ủa chromedriver.exe để Selenium có thể giao tiếp với trình duyệt.
  • from selenium.webdriver.common.by import By: Nhập By 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 đến chromedriver.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.
  • driver = webdriver.Chrome(service=service_obj):
    • Khởi tạo một đối tượng driver sử dụng webdriver.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.

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.
  • 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/")

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.

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.
  • 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().

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).