Làm cách nào để chuyển đổi giữa nhiều cửa sổ trong Selenium Python?
Rất nhiều lần chúng tôi phải đối mặt với các tình huống khi nhấp vào liên kết hoặc nút sẽ mở ra toàn bộ cửa sổ trình duyệt mới và chúng tôi có nhiều trường hợp cửa sổ mở ra Show
Hãy xem một ví dụ nhanh ở đây Duyệt qua liên kết này và nhấp vào siêu liên kết có nội dung “ Mở cửa sổ bật lên “. Một cửa sổ trình duyệt nhỏ sẽ mở ra khi chúng tôi nhấp vào liên kết này. Đây là nhiều cửa sổ và thường xuyên nhất là chúng có mặt trong phần lớn các trang web. Nếu chúng ta muốn thực hiện một số chức năng trong cửa sổ con (chức năng xuất hiện sau khi chúng ta nhấp vào liên kết), thì chúng ta cần chuyển quyền kiểm soát sang các cửa sổ con rồi thực hiện thao tác nói trên, vì theo mặc định, tiêu điểm được bật Selenium API đã cung cấp cho chúng tôi các phương thức dựng sẵn để chúng tôi có thể đặt lại hoặc chuyển tiêu điểm từ cửa sổ mẹ sang cửa sổ con và sau đó thực hiện những gì chúng tôi muốn làm Hãy cho chúng tôi xem làm thế nào những tình huống này có thể được xử lý bằng Selenium import unittest from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By class GoogleOrgSearch(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() def test_google_search_page(self): driver = self.driver driver.get("http://www.quackit.com/html/codes/html_popup_window_code.cfm") str1=driver.title print(str1) #get the window handles using window_handles( ) method window_before = driver.window_handles[0] print(window_before) #since the pop-up is now in an iframe driver.switch_to.frame(driver.find_element_by_name('result1')) driver.find_element_by_link_text('Open a popup window').click() #get the window handle after a new window has opened window_after = driver.window_handles[1] #switch on to new child window driver.switch_to.window(window_after) str2=driver.title print(str2) print(window_after) #assert that main window and child window title don't match self.assertNotEqual(str1,str2) print('This window has a different title') #switch back to original window driver.switch_to.window(window_before) #assert that the title now match self.assertEqual(str1,driver.title) print('Returned to parent window. Title now match') def tearDown(self): self.driver.close() if __name__ == "__main__": unittest.main() Đầu ra phải là, tên cửa sổ cũng phải được in và tiêu đề cũng phải được khẳng định. Khi bạn chạy tập lệnh, chúng tôi có đầu ra này trong PyCharm Bây giờ hãy cho chúng tôi hiểu làm thế nào chúng tôi quản lý để làm điều đó. Phương thức cung cấp một cách để trả về tất cả các cửa sổ trong phiên hiện tại Chúng tôi đã sử dụng phương pháp Bây giờ ở đây chúng ta đã giả sử rằng chúng ta đã biết rằng chúng ta có hai cửa sổ đang mở. Điều gì sẽ xảy ra nếu có nhiều hơn hai cửa sổ con đang mở. Bạn sẽ chuyển điều khiển sang cửa sổ thứ ba hoặc nhiều cửa sổ đang mở như thế nào? Một người dùng có thể mở nhiều tab trong khi duyệt internet. Trong một số trường hợp, nhấp vào liên kết hoặc nút cụ thể sẽ mở một URL cụ thể trong tab mới. Do đó, người dùng có thể cần phải chuyển sang tab mới để tiếp tục Để tự động hóa kịch bản thử nghiệm trong Selenium khi người dùng chuyển đổi giữa các tab, QA sử dụng các phương thức current_window_handle và window_handles do Selenium WebDriver cung cấp Ở cấp độ cao, phương thức window_handles lưu ID cửa sổ cho tất cả các tab được mở trong trình duyệt. Các ID này được lưu trữ dưới dạng kiểu dữ liệu String Tương tự, ID xử lý cửa sổ của cửa sổ hiện đang hoạt động được lưu trữ theo phương thức current_window_handle. Để Selenium chuyển sang một cửa sổ cụ thể, người ta cần sử dụng phương thức switch_to_window. Chuyển ID xử lý cửa sổ của tab đích mà người dùng muốn chuyển làm đối số cho phương thức đó Để chuyển đổi các tab, như được hiển thị ở trên, hãy làm theo bốn bước cơ bản
Tham khảo mã bên dưới để chuyển tab bằng Selenium from selenium import webdriver import time driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe") driver.get("https://accounts.google.com/signup") driver.find_element_by_link_text("Help").click() #prints parent window title print("Parent window title: " + driver.title) #get current window handle p = driver.current_window_handle #get first child window chwd = driver.window_handles for w in chwd: #switch focus to child window if(w!=p): driver.switch_to.window(w) break time.sleep(0.9) print("Child window title: " + driver.title) driver.quit() Khi thực thi mã này, chương trình sẽ khởi chạy nhiều cửa sổ. Sau đó, thao tác chuyển đổi sẽ được thực hiện sau khi ID mục tiêu của tab được xác định Chạy mã, tự động điều hướng người dùng qua nhiều cửa sổ và đảm bảo rằng trang web hoạt động hoàn hảo trong điều kiện người dùng thực. Điều này sẽ cho phép tạo một trang web cung cấp trải nghiệm người dùng tối ưu Thực hiện kiểm tra Selenium tự động trên đám mây thiết bị thực để có kết quả hoàn toàn chính xác, mọi lúc. Lưới Selenium trên đám mây của BrowserStack gồm hơn 2000 trình duyệt và thiết bị thực cho phép người kiểm tra tự động kiểm tra trang web trong điều kiện thực tế. Chỉ cần đăng ký, chọn kết hợp thiết bị-trình duyệt-HĐH và bắt đầu chạy thử nghiệm miễn phí Chạy thử nghiệm Selenium miễn phí ngay bây giờ Kiểm tra tự động hóa Selenium Trình quản trị trang web Selenium Bài đăng này có hữu ích không? Vâng, cảm ơn Không thực sự Chúng tôi rất tiếc khi biết điều đó. Hãy chia sẻ phản hồi của bạn để chúng tôi có thể làm tốt hơnCảm ơn rất nhiều phản hồi của bạn Thẻ Kiểm tra tự động hóa Selenium Trình quản trị trang web SeleniumNhững bài viết liên quan7 thực hành để tự động hóa trình duyệt web Selenium hiệu quảTìm hiểu 7 thực hành sẽ giúp tự động hóa trình duyệt web Selenium hiệu quả. Tự động xác minh Tìm hiểu thêm Làm cách nào để xử lý nhiều cửa sổ trong Selenium?Mỗi trang web phải được kiểm tra bằng cách đưa nó qua nhiều tình huống người dùng trong thế giới thực. Một cảnh như vậy Làm cách nào để chuyển đổi giữa nhiều cửa sổ trong Selenium?Trong Selenium, khi chúng ta có nhiều cửa sổ trong bất kỳ ứng dụng web nào, cách tiếp cận có thể cần chuyển điều khiển giữa một số cửa sổ i. e từ cửa sổ này sang cửa sổ khác để thực hiện bất kỳ hành động nào và chúng ta có thể đạt được điều này bằng cách sử dụng switchto(); . .
Làm cách nào để mở nhiều trình duyệt trong Selenium Python?Các bước cần thiết. Nó phải được đặt trong biến "Đường dẫn" trong windows cũng như trong Linux và Mac, ở các vị trí tương ứng, nó phải được đặt. Mở trình duyệt Firefox mới từ Python. Sau đó tải trang tại URL hợp lệ đã cho .
Chúng ta có thể xử lý nhiều cửa sổ trong Selenium không?Trình xử lý cửa sổ trong Selenium giúp xử lý nhiều cửa sổ và cửa sổ con . Mỗi cửa sổ trình duyệt có một giá trị xử lý cửa sổ duy nhất thông qua đó nó có thể được xác định. |