Chuyên mục:
Python
Cập nhật:
19/12/2024
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.