19 Kỹ thuật xử lý cửa sổ con với tab

Chuyên mục: Python
Cập nhật: 19/12/2024
19 Kỹ thuật xử lý cửa sổ con với tab

Khi điều khiển trình duyệt mở tab mới để thao tác sâu hơn với web, chúng ta cần nắm vững cách làm việc với các tab ( cửa sổ con):

from selenium import webdriver
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(2)

driver.get("https://the-internet.herokuapp.com/windows")
driver.find_element(By.LINK_TEXT,"Click Here").click()
windowsOpened = driver.window_handles

driver.switch_to.window(windowsOpened[1])
print(driver.find_element(By.TAG_NAME, "h3").text)
driver.close()
driver.switch_to.window(windowsOpened[0])
assert "Opening a new window" == driver.find_element(By.TAG_NAME, "h3").text

Giải thích từng dòng:

pythonCopy codefrom selenium import webdriver
  • Chức năng: Import lớp webdriver từ Selenium, cho phép điều khiển trình duyệt web.
pythonCopy codefrom selenium.webdriver.chrome.service import Service
  • Chức năng: Import lớp Service để quản lý tệp thực thi của ChromeDriver.
pythonCopy codefrom selenium.webdriver.common.by import By
  • Chức năng: Import lớp By dùng để xác định cách tìm kiếm các phần tử trên trang web (theo id, tên, lớp, liên kết, v.v.).
pythonCopy codeservice_obj = Service("C:/Users/DELL/Desktop/chromedriver-win64/chromedriver.exe")
  • Chức năng: Tạo đối tượng Service với đường dẫn tới tệp ChromeDriver (công cụ kết nối giữa Selenium và trình duyệt Chrome).
pythonCopy codedriver = webdriver.Chrome(service=service_obj)
  • Chức năng: Tạo một trình duyệt Chrome được điều khiển bởi Selenium, sử dụng dịch vụ được định nghĩa ở dòng trên.
pythonCopy codedriver.implicitly_wait(2)
  • Chức năng: Đặt thời gian chờ ngầm định là 2 giây để Selenium đợi các phần tử xuất hiện trước khi thực hiện các thao tác.
pythonCopy codedriver.get("https://the-internet.herokuapp.com/windows")
  • Chức năng: Mở trang web với URL đã cung cấp trong trình duyệt.
pythonCopy codedriver.find_element(By.LINK_TEXT,"Click Here").click()
  • Chức năng: Tìm phần tử liên kết có nội dung là "Click Here" và nhấp vào nó.
pythonCopy codewindowsOpened = driver.window_handles
  • Chức năng: Lấy danh sách tất cả các cửa sổ hoặc tab đang mở và lưu vào biến windowsOpened.
pythonCopy codedriver.switch_to.window(windowsOpened[1])
  • Chức năng: Chuyển đến cửa sổ mới mở (chỉ mục 1 trong danh sách).
pythonCopy codeprint(driver.find_element(By.TAG_NAME, "h3").text)
  • Chức năng: Tìm phần tử HTML có thẻ <h3> trong cửa sổ hiện tại và in nội dung văn bản của nó.
pythonCopy codedriver.close()
  • Chức năng: Đóng cửa sổ hiện tại (là cửa sổ mới mở).
pythonCopy codedriver.switch_to.window(windowsOpened[0])
  • Chức năng: Quay lại cửa sổ ban đầu (chỉ mục 0 trong danh sách).
pythonCopy codeassert "Opening a new window" == driver.find_element(By.TAG_NAME, "h3").text
  • Chức năng: Kiểm tra nội dung của thẻ <h3> trong cửa sổ ban đầu có đúng là "Opening a new window" không. Nếu không đúng, chương trình sẽ báo lỗi.