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

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.

Làm cách nào để chuyển đổi giữa nhiều cửa sổ trong Selenium Python?

Làm cách nào để chuyển đổi giữa nhiều cửa sổ trong Selenium Python?

Đâ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

Làm cách nào để chuyển đổi giữa nhiều cửa sổ trong Selenium Python?

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 switch_to.window( ) để chuyển điều khiển sang cửa sổ mới mở. Ở đây chúng ta có thể chuyển hai tham số sau - tên cửa sổ hoặc

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

  1. Sau khi trình duyệt được khởi chạy và có nhiều tab đang hoạt động, hãy lưu trữ ID xử lý cửa sổ của cửa sổ hiện đang hoạt động trong một biến bằng cách sử dụng phương thức current_window_handle
  2. Lưu trữ ID xử lý cửa sổ của các tab đang hoạt động khác trong một biến bằng phương thức window_handles
  3. Thực hiện lặp lại với tất cả các ID xử lý cửa sổ có sẵn bằng cách so sánh nó với ID của tab hiện đang hoạt động
  4. Thực hiện thao tác Chuyển đổi sau khi ID xử lý cửa sổ của tab mong muốn được tìm thấy bằng switch_to. phương pháp cửa sổ. Sau đó, chuyển ID của tab đích làm đối số

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ơn

Cả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 Selenium

Những bài viết liên quan

Làm cách nào để chuyển đổi giữa nhiều cửa sổ trong Selenium Python?

7 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 để chuyển đổi giữa nhiều cửa sổ trong Selenium Python?

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.