Chuyển sang cửa sổ trong selen python

Kiểm thử tự động là một bước quan trọng trong quy trình phát triển của một sản phẩm phần mềm. Trong một môi trường phát triển linh hoạt, nơi có sự phát triển, triển khai và bảo trì liên tục các sản phẩm phần mềm, kiểm thử tự động đảm bảo rằng các sản phẩm phần mềm cuối cùng được phân phối không có lỗi

Trong thế giới tự động hóa, Selenium là một trong những khung thử nghiệm tự động hóa nguồn mở được sử dụng rộng rãi nhất để thực hiện các thử nghiệm trình duyệt web tự động trên các trang web. Selenium có thể chạy thử nghiệm tự động trên nhiều trình duyệt khác nhau [e. g. , Chrome, Firefox, Edge, v.v. ]. Các tập lệnh tự động hóa thử nghiệm có thể được tạo ra bằng cách sử dụng các khung phổ biến được cung cấp bởi các ngôn ngữ như C #, Java, JavaScript, Python, v.v.

Kiến trúc Selenium WebDriver

Các trường hợp kiểm thử tự động mà bạn thực hiện bằng Selenium có thể dẫn bạn đến những trường hợp cần phải xử lý nhiều cửa sổ trong khi làm việc với một ứng dụng web. Tình huống này có thể phát sinh do nhấp vào nút trên trang web mở ra URL tới tab mới hoặc cửa sổ mới. Ví dụ: nền tảng tìm kiếm việc làm Glassdoor sẽ mở ra một cửa sổ mới khi bạn nhấp vào các nút để đăng nhập bằng tài khoản Google hoặc tài khoản Facebook của mình

Trang chủ Glassdoor

Nhấp vào nút “Tiếp tục với Facebook” để đăng nhập

Cửa sổ trang Facebook

Một cửa sổ trang web Facebook sẽ bật lên để nhắc bạn đăng nhập

Do đó, người dùng có thể cần truy cập vào cửa sổ trình duyệt đang mở để tiếp tục

Là một QA tester, việc chạy một test case có thể yêu cầu bạn hoàn thành một số thao tác trong cửa sổ hoặc tab trình duyệt mới mở trước khi quay lại cửa sổ hoặc tab ban đầu để hoàn thành các tác vụ còn lại

Trong blog này về cách xử lý nhiều cửa sổ trong Selenium Python, chúng ta sẽ thảo luận về những điều cơ bản về cửa sổ trình duyệt và cách xử lý nhiều cửa sổ trong Selenium Python. Đến cuối blog, bạn sẽ có thể xử lý nhiều cửa sổ khi chúng phát sinh khi thực hiện các trường hợp thử nghiệm

Cửa sổ trình duyệt trong Selenium là gì?

Cửa sổ trình duyệt, còn được gọi là cửa sổ chính hoặc cửa sổ chính, là phần điều khiển của trang chủ hoặc trang web đang mở hiện tại mà người dùng truy cập sau khi truy cập trình duyệt. Khi chạy tập lệnh tự động hóa Selenium, cửa sổ chính sẽ khởi chạy. Tạo phiên Selenium WebDriver sẽ mở ra một cửa sổ theo mặc định nằm dưới sự kiểm soát của WebDriver

Cửa sổ trình duyệt Chrome được kiểm soát bởi phần mềm kiểm tra tự động

Để xem cửa sổ chính trông như thế nào, đây là cửa sổ của trang web LambdaTest Selenium Playground

Cửa sổ phụ huynh sân chơi Selenium

Selenium WebDriver luôn giữ ngữ cảnh của cửa sổ chính khi điều hướng đến một URL được xác định để mở một cửa sổ mới. Cửa sổ con sẽ nằm trong ngữ cảnh của cửa sổ cha. Điều này cho phép điều hướng qua lại giữa các cửa sổ sau khi bạn hoàn thành các thao tác mà bạn đang xử lý trong cửa sổ con mới mở

Hệ thống phân cấp của trình duyệt Windows

Đây là tất cả về cửa sổ trình duyệt trong Selenium. Trong phần tiếp theo của blog này về cách xử lý nhiều cửa sổ trong Selenium Python, chúng ta sẽ tìm hiểu thêm về các cửa sổ con trong Selenium

Cửa sổ con trong Selenium là gì?

Khi chúng ta nhấp vào một nút hoặc liên kết URL trong cửa sổ chính và hành động đó sẽ mở ra [các] cửa sổ khác trong cửa sổ chính, [các] cửa sổ mới đó được gọi là cửa sổ con. [Các] cửa sổ hoặc [các] tab mới được mở được gọi là con của cửa sổ chính và có các tay cầm cửa sổ duy nhất

Để minh họa cách xử lý các cửa sổ con, hãy sử dụng LambdaTest Selenium Playground mà chúng tôi đã đề cập trước đó

  1. Nhấp vào liên kết Windows Popup Modal trong cửa sổ chính
  2. Nhấp vào tùy chọn Window Popup Modal
  3. Nhấp vào các nút trong Chế độ bật lên một cửa sổ để mở một cửa sổ con duy nhất
  4. Nhấp vào các nút trong Cửa sổ bật lên một cửa để mở Cửa sổ con

    Cửa sổ bật lên một cửa sổ
  5. Nhấp vào nút Nhiều cửa sổ bật lên để mở nhiều cửa sổ trình duyệt con. Nút đầu tiên sẽ mở hai cửa sổ con, trong khi nút “Theo dõi tất cả” sẽ mở ba cửa sổ con


Hai cửa sổ con


Ba cửa sổ con

Trang hiện tại bạn đang truy cập là cửa sổ chính, trong khi các cửa sổ [trang web Facebook, Twitter và LambdaTest] mở bằng cách nhấp vào các nút là cửa sổ con

Có thể mở một cửa sổ hoặc nhiều cửa sổ con từ một cửa sổ chính. Cũng cần lưu ý rằng một cửa sổ con có thể chứa hoặc không chứa liên kết URL

Trong khi tiến hành một trường hợp thử nghiệm theo cách thủ công, thật đơn giản để kiểm tra hành vi của các cửa sổ con do khả năng hiển thị của chúng trong ngữ cảnh của cửa sổ mẹ. Tuy nhiên, điều này không xảy ra khi sử dụng Selenium để tự động hóa test case vì chúng ta cần thay đổi ngữ cảnh của WebDriver từ cửa sổ cha sang cửa sổ con để thực hiện các thao tác trên đó

Xử lý cửa sổ trong Selenium Python là gì?

Vì chúng ta đã thảo luận về khái niệm cửa sổ trong Selenium trong phần trên của blog này về cách xử lý nhiều cửa sổ trong Selenium Python, chúng ta hãy chuyển sang tìm hiểu cách kiểm soát nhiều cửa sổ

Nhiều cửa sổ được đưa ra bởi các tình huống trong đó một ứng dụng web điều hướng đến hoặc mở nhiều cửa sổ trình duyệt. Selenium cung cấp tùy chọn xử lý nhiều cửa sổ bằng tay cầm cửa sổ

Selenium WebDriver không phân biệt giữa cửa sổ và tab. Nó xử lý cả hai bằng cách sử dụng tay cầm cửa sổ. Bất cứ khi nào một cửa sổ được mở, nó chứa một ID riêng biệt trả về một giá trị chuỗi, làm cho nó trở thành duy nhất và tồn tại trong toàn bộ phiên

Sử dụng trang Window Popup Modal Demo từ trang web LambdaTest Selenium Playground, chúng ta có thể thấy ID của cửa sổ trình duyệt chính và cửa sổ con, như minh họa bên dưới

Làm cách nào để xử lý nhiều cửa sổ trong Selenium Python?

Chúng ta có thể xử lý sự xuất hiện của các cửa sổ con hoặc tab khi chạy các trường hợp thử nghiệm bằng Selenium Python. Khi cửa sổ cha mở cửa sổ con, WebDriver chỉ điều khiển một cửa sổ tại một thời điểm trong phiên chạy

WebDriver kiểm soát cửa sổ chính và mọi hành động trong tập lệnh kiểm tra sẽ được thực thi trong cửa sổ hiện đang hoạt động

Selenium Python WebDriver cung cấp các phương thức sau để xử lý nhiều cửa sổ

current_window_handle[]

Phương pháp này thu thập ID xử lý cửa sổ duy nhất của cửa sổ trình duyệt hiện đang hoạt động

cú pháp. người lái xe. current_window_handle

window_handles[]

Phương thức này trả về ID của tất cả các cửa sổ đã được WebDriver mở trong phiên hiện tại. Nó lưu trữ ID cửa sổ được sử dụng để chuyển đổi cửa sổ

cú pháp. người lái xe. window_handles

chuyển sang. cửa sổ[]

Phương pháp này chuyển tiêu điểm của WebDriver từ cửa sổ trình duyệt hiện đang mở sang cửa sổ trình duyệt dự định. Id của cửa sổ được nhắm mục tiêu được chuyển làm đối số để chuyển điều khiển của WebDriver sang cửa sổ mới

cú pháp

lựa chọn 1. người lái xe. chuyển sang. cửa sổ[]

Lựa chọn 2. người lái xe. chuyển sang. cửa sổ[]

Tự động hóa các bài kiểm tra Python của bạn sau vài giây. Thử LambdaTest ngay


Bây giờ, hãy đi sâu vào nó với một minh họa thực tế về cách xử lý nhiều cửa sổ trong Selenium Python

trình diễn. Làm cách nào để xử lý nhiều cửa sổ trong Selenium Python?

Bây giờ chúng ta đã xem xét các phương pháp khác nhau có sẵn trong Selenium Python để xử lý nhiều cửa sổ, phần này về cách xử lý nhiều cửa sổ trong Selenium Python sẽ xem xét cách thực hiện các kiểm tra Selenium này trên lưới Selenium đám mây

Cách tiếp cận tốt nhất để sử dụng đầy đủ thử nghiệm tự động hóa Python và nhanh chóng đạt được kết quả mong muốn là sử dụng Lưới Selenium dựa trên đám mây. Chúng tôi có thể tự động hóa việc xử lý nhiều cửa sổ trong Selenium Python bằng cách sử dụng nền tảng Lưới Selenium dựa trên đám mây như LambdaTest

LambdaTest cho phép bạn thực hiện kiểm tra trình duyệt chéo tự động trên quy mô lớn bằng cách sử dụng đám mây Selenium IDE. Nền tảng này cung cấp một nhóm trình duyệt trực tuyến gồm hơn 3000 trình duyệt web thực chạy trên các hệ điều hành khác nhau để đảm bảo rằng các doanh nghiệp phát triển các ứng dụng phần mềm chất lượng cao nhanh hơn

Bạn cũng có thể Đăng ký Kênh YouTube LambdaTest và cập nhật các hướng dẫn mới nhất về kiểm tra trình duyệt tự động, kiểm tra Selenium, kiểm tra Cypress E2E, CI/CD, v.v.

Thiết lập dự án

Để bắt đầu viết bài kiểm tra tự động hóa web Python, chúng ta cần cài đặt Python và Selenium trên máy khách. Nếu bạn không quen với Selenium bằng Python, bạn có thể xem blog chi tiết này về cách bắt đầu với Selenium Python

Có nhiều khung kiểm tra Python khác nhau có sẵn để kiểm tra Selenium, bao gồm PyUnit [unittest], pytest, Behave, Robot, Lettuce, Nose2 và Testify. Bạn có thể tìm hiểu thêm về các khung kiểm tra Selenium Python này một cách chi tiết trong bài đăng trên blog này về các khung kiểm tra Python tốt nhất

Tuy nhiên, trong blog này về cách xử lý nhiều cửa sổ trong Selenium Python, chúng tôi sẽ sử dụng khung thử nghiệm pytest. Pytest là một khung tự động hóa web Python nguồn mở chủ yếu được sử dụng để thử nghiệm đơn vị và có thể mở rộng bằng cách hỗ trợ các thử nghiệm tự động hóa cho các chức năng, API và thử nghiệm đơn vị

Hướng dẫn chi tiết về Selenium pytest này có thể hướng dẫn bạn thêm về cách định cấu hình và bắt đầu sử dụng Khung pytest để thực hiện các kiểm tra tự động trong Selenium Python

Chúng tôi sử dụng IDE VS Code [Visual Studio ] để viết và chạy các tập lệnh tự động hóa Selenium Python cho dự án trường hợp thử nghiệm của chúng tôi. Ngoài Mã VS, còn có các IDE khác như Atom, PyCharm và Sublime Text cũng có thể được sử dụng để viết các tập lệnh thử nghiệm

Trình quản lý gói chúng tôi sử dụng là PIP, trình quản lý gói mặc định cho Python. Nó được cài đặt sẵn khi bạn cài đặt Python [phiên bản 3. 4 trở lên]. Pip cho phép bạn cài đặt và quản lý các gói bổ sung không có trong thư viện chuẩn Python. Các gói này được xây dựng đặc biệt để sử dụng cho các khung, tiện ích và mô-đun phát triển khác nhau

Phần trình diễn của dự án test case sẽ được chạy trên hệ điều hành Windows. Ngoài ra, các bước về cách thiết lập dự án trên macOS cũng đã được bao gồm

  1. Để sử dụng Pip để quản lý các phụ thuộc của dự án, trước tiên chúng ta hãy xem phiên bản hiện có trong các thiết bị đầu cuối dòng lệnh
  2. các cửa sổ. pip –phiên bản

    hệ điều hành Mac. pip –phiên bản

  3. Tạo một thư mục sẽ chứa dự án thử nghiệm
  4. Di chuyển vào thư mục dự án bạn vừa tạo
  5. Tạo một môi trường ảo [venv] sẽ chứa các phụ thuộc cụ thể được sử dụng bởi dự án thử nghiệm. Việc tạo một venv là rất quan trọng vì chúng tôi không muốn kết hợp các phụ thuộc toàn cầu do Python cung cấp với các thư viện cụ thể mà chúng tôi cần để chạy các trường hợp thử nghiệm của dự án. Chúng tôi cài đặt thư viện môi trường ảo trên Windows để giúp tạo venv bằng lệnh sau
  6. các cửa sổ

    hệ điều hành Mac. Sudo pip cài đặt virtualenv

  7. Chạy lệnh được đề cập bên dưới trên thiết bị đầu cuối để kích hoạt môi trường ảo
  8. các cửa sổ

    hệ điều hành Mac. virtualenv multiwindowstest

  9. Kích hoạt môi trường ảo để chúng tôi có thể cài đặt các thư viện cần thiết để chạy dự án thử nghiệm của chúng tôi
  10. hệ điều hành Mac. nguồn multiplewindowstest/bin/kích hoạt

  11. Chúng tôi cài đặt các phụ thuộc thư viện sau trong venv của dự án thử nghiệm để chạy thử nghiệm Selenium Python
  • selen [câu 4. 1. 2]
  • flake8 [câu 4. 0. 1]
  • pytest [câu 7. 1. 2]
  • pytest-xdist [v 2. 5. 0]
  • autopep8 [v 1. 6. 0]

Thư viện autopep8 thực thi hướng dẫn kiểu PEP 8 trên mã Python để đảm bảo nó ở đúng định dạng, trong khi flake8 là thư viện kiểm tra mã Python để tìm lỗi trái với hướng dẫn kiểu PEP 8

Plugin pytest-xdist là một phần mở rộng của pytest giới thiệu chế độ thực thi thử nghiệm mới cho phép chúng tôi thực hiện các thử nghiệm Selenium Python song song

  1. Để cài đặt các phụ thuộc được mô tả ở trên, hãy viết lệnh bên dưới trong thiết bị đầu cuối như sau
  2. Cú pháp – cài đặt pip [tên thư viện]

  3. Tạo một “yêu cầu. txt” chứa tất cả các phụ thuộc dự án đã cài đặt trong thư mục gốc
  4. đóng băng pip> yêu cầu. txt

Hãy tạo một thư mục có tên là “seltests” trong thư mục gốc của dự án để chứa các tập lệnh kiểm tra

Trước khi chạy thử nghiệm, vui lòng đặt các biến môi trường LT_USERNAME & LT_ACCESS_KEY từ thiết bị đầu cuối. Chi tiết tài khoản có sẵn trên trang Hồ sơ LambdaTest

Đối với macOS

  • xuất LT_USERNAME=LT_USERNAME
  • xuất LT_ACCESS_KEY=LT_ACCESS_KEY

cho Linux

  • xuất LT_USERNAME=LT_USERNAME
  • xuất LT_ACCESS_KEY=LT_ACCESS_KEY

Cho cửa sổ

  • đặt LT_USERNAME=LT_USERNAME
  • đặt LT_ACCESS_KEY=LT_ACCESS_KEY

Chạy tập lệnh kiểm tra Python trên hơn 3000 thiết bị và trình duyệt. Thử LambdaTest ngay


Trong các phần tiếp theo của blog này về cách xử lý nhiều cửa sổ trong Selenium Python, chúng ta sẽ xem xét các trường hợp sử dụng sau khi xử lý các cửa sổ trong Selenium Python

  • Xử lý một cửa sổ con duy nhất trong Selenium Python
  • Xử lý nhiều cửa sổ con trong Selenium Python
  • Chuyển về cửa sổ chính từ cửa sổ con trong Selenium Python

Xử lý một cửa sổ con duy nhất trong Selenium Python

Chúng ta hãy xem cách triển khai xử lý cửa sổ trên một cửa sổ con duy nhất trong tình huống thử nghiệm sau

trường hợp thử nghiệm

  1. Điều hướng đến liên kết URL https. //www. lambdatest. com/selenium-sân chơi/
  2. Nhấp vào liên kết “Chế độ bật lên cửa sổ”
  3. Trong trang web mới, nhấp vào nút “Theo dõi trên Twitter” để mở một cửa sổ con
  4. Chuyển sang cửa sổ con đã mở
  5. In id xử lý cửa sổ của cửa sổ con

Triển khai [Trường hợp thử nghiệm trên Trình duyệt Chrome]


Thực thi mã

Để chạy các tập lệnh kiểm tra, hãy nhập lệnh sau trong thiết bị đầu cuối

python -m pytest seltests/test_single_window_handling_chrome. py

Sau khi kiểm tra được thực thi, đầu ra trong thiết bị đầu cuối sẽ hiển thị GUIDS của cửa sổ cha và con, như minh họa bên dưới

Sau khi thực thi thử nghiệm hoàn tất, bạn có thể xem kết quả và nhật ký trong phần Bản dựng của Bảng điều khiển tự động hóa LambdaTest

Bạn có thể xem bản ghi thử nghiệm và nhật ký của các thử nghiệm đã thực hiện

Hướng dẫn mã

Bây giờ, chúng ta hãy đi qua mã chúng tôi đã viết chi tiết

Bước 1. Tại đây, chúng tôi nhập các thư viện Selenium Python quan trọng sẽ cho phép chúng tôi thực hiện thử nghiệm của mình. Chúng bao gồm pytest, WebDriver, By, BrowserOptions, WebDriverWait, vàexpected_conditions

Chúng tôi nhập pytest, vì đây là công cụ kiểm tra đơn vị chính của Selenium Python. Selenium WebDriver đã nhập là một khung web tự động kiểm tra trình duyệt chéo

Truy vấn Theo được sử dụng để định vị các phần tử web cụ thể bằng phương thức find_element[]. Thời gian chờ rõ ràng triển khai lớp WebDriverWait kết hợp với lớpexpected_conditions để xác định thời gian chờ một điều kiện nhất định được thực thi trước khi chuyển sang phần tiếp theo của mã

Cuối cùng, lớp Tùy chọn tùy chỉnh các phiên trình điều khiển trình duyệt đã chỉ định. Đối với trường hợp này, chúng tôi đang sử dụng các lớp ChromeOptions

Bước 2. Chúng tôi tạo các tùy chọn bằng cách sử dụng Trình tạo khả năng tự động hóa LambdaTest theo trình duyệt mà chúng tôi sử dụng để chạy thử nghiệm tự động. Chúng tôi tạo một thể hiện của lớp Tùy chọn, đặt các điều kiện và chuyển nó tới hàm tạo trình điều khiển

Bước 3. Chúng tôi đặt tên người dùng và mã truy cập được cung cấp trong trang Hồ sơ LambdaTest thành biến remote_url kết nối chúng tôi với Lưới Selenium từ xa [@hub. lambdatest. com/wd/trung tâm]. Sau đó, chúng tôi sử dụng remote_url và các tùy chọn để khởi tạo trình duyệt web tương ứng [Chrome]

Bước 4. Chúng tôi mở trang web LambdaTest Playground, sau đó tối đa hóa cửa sổ trình duyệt để định vị phần tử web có liên kết đến Trang trình diễn cửa sổ bật lên

Nhấp chuột phải vào liên kết “Windows Popup Modal” và nhấp vào kiểm tra để mở công cụ kiểm tra trình duyệt. Phần tử web được định vị bằng cách sử dụng thẻ href của nó

Chúng tôi sử dụng trình điều khiển. phương thức current_window_handle để lấy id duy nhất của cửa sổ chính và lưu trữ dưới dạng chuỗi

Bước 5. Sau đó, chúng tôi xác định vị trí phần tử web bằng nút “Theo dõi trên Twitter” bằng cách sử dụng tiêu đề của phần tử đó và nhấp vào phần tử đó để mở một cửa sổ con

Chúng tôi lưu trữ các tay cầm cửa sổ của các cửa sổ đã mở trong một biến gọi là all_guid

Bước 6. Sau đó, chúng tôi chuyển sang cửa sổ con bằng trình điều khiển. chuyển sang. phương pháp cửa sổ [hướng dẫn]. Mã lặp lại qua các tay cầm cửa sổ được lưu trữ và nếu nó đi qua tay cầm cửa sổ chính, nó sẽ bỏ qua và chuyển sang cửa sổ con. Sau đó ID của cửa sổ con được in

Người lái xe. close[] đóng cửa sổ con hiện đang hoạt động và sẽ thoát phiên trình điều khiển nếu cửa sổ con là cửa sổ hoạt động duy nhất

Sau đó, chúng tôi đóng phiên trình duyệt bằng phương thức driverquit[] trong Selenium

Xử lý nhiều cửa sổ con trong Selenium Python

Trong phần trên của blog này về cách xử lý nhiều cửa sổ trong Selenium Python, chúng ta đã xem xét cách xử lý một cửa sổ con duy nhất trong Selenium bằng Python. Chúng ta hãy xem cách triển khai xử lý cửa sổ của nhiều cửa sổ con trong các tình huống bên dưới

Trường hợp thử nghiệm [Chuyển cửa sổ theo tiêu đề trang]

  1. Điều hướng đến URL https. //www. lambdatest. com/selenium-sân chơi/
  2. Nhấp vào liên kết “Chế độ bật lên cửa sổ”
  3. Trong trang web mới, nhấp vào nút “Theo dõi Twitter & Facebook” để mở các cửa sổ con
  4. Chuyển sang từng cửa sổ con đang mở bằng tiêu đề trang
  5. In tiêu đề trang của mỗi cửa sổ con
  6. Đóng phiên trình duyệt

Thực thi mã

Chúng tôi thực thi các tập lệnh kiểm tra trong thiết bị đầu cuối bằng lệnh sau

python -m pytest seltests/test_multiple_windows_handling_chrome. py

Thử nghiệm chạy thành công trong thiết bị đầu cuối và hiển thị đầu ra sau, như hình bên dưới

Chúng ta có thể xem kết quả của tập lệnh thử nghiệm trong phần Bản dựng LambdaTest

Nhật ký và bản ghi của bài kiểm tra cũng được hiển thị

Hướng dẫn mã

Mã được viết để triển khai xử lý nhiều cửa sổ con trong Selenium bằng Python tương tự như mã được viết để xử lý một cửa sổ con. Tuy nhiên, sự khác biệt xuất hiện khi lặp qua các tay cầm cửa sổ, khi chúng tôi chỉ ra sự khác biệt giữa các cửa sổ con dựa trên tiêu đề trang tương ứng của chúng

Trong trang “Window Popup Modal”, chúng tôi tìm nút “Theo dõi Twitter & Facebook” bằng ID của nó trong công cụ kiểm tra. Chúng tôi nhấp vào nút, sau đó sẽ mở ra hai cửa sổ con

Tay cầm cửa sổ của các cửa sổ hiện đang mở được lưu trữ trong một biến gọi là all_guid và tổng số cửa sổ đang mở được ghi lại trong biến num_of_handles

Mã lặp qua tất cả các bộ điều khiển cửa sổ được lưu trữ, xác định các bộ điều khiển cửa sổ con và chuyển sang các cửa sổ con. Mã kiểm tra tiêu đề trang của cửa sổ con và in nó. Các cửa sổ con sau đó được đóng lại bằng trình điều khiển. phương thức đóng []

Phiên trình điều khiển sau đó cuối cùng được đóng lại bằng phương thức thoát []

Chuyển về cửa sổ chính từ cửa sổ con trong Selenium Python

Chúng ta hãy xem xét một tình huống trong đó chúng ta muốn chuyển về cửa sổ cha từ cửa sổ con sau khi hoàn thành một số thao tác. Điều này có nghĩa là chúng ta phải thay đổi điều khiển của WebDriver thành cửa sổ chính

Chúng tôi sẽ triển khai kịch bản được thảo luận trong phần trên của blog này về cách xử lý nhiều cửa sổ trong Selenium Python để chứng minh việc chuyển trở lại cửa sổ chính

Thực thi mã

Chúng tôi chạy tập lệnh thử nghiệm trong thiết bị đầu cuối bằng lệnh sau

python -m pytest seltests/test_switch_to_parent_window_chrome. py

Tập lệnh kiểm tra sẽ thực thi thành công trong thiết bị đầu cuối và hiển thị đầu ra sau

Chúng tôi có thể xem kết quả thử nghiệm trong bảng điều khiển LambdaTest Builds

Hướng dẫn mã

Trong tập lệnh thử nghiệm, sau khi điều hướng qua các cửa sổ con và thực hiện các thao tác mà chúng tôi đã chỉ định trong kịch bản trước đó, các cửa sổ con đang mở sẽ đóng lại. Sau đó, chúng tôi chuyển trở lại cửa sổ chính bằng cách sử dụng switch_to. phương thức window[parent_guid] với biến parent_guid làm đối số của phương thức. Sau đó, chúng tôi in tay cầm của cửa sổ chính

Phiên trình điều khiển cuối cùng đã đóng bằng trình điều khiển. phương thức thoát []

Nếu bạn là một lập trình viên Python đang muốn nâng tầm sự nghiệp của mình lên một tầm cao mới, thì bạn có thể sử dụng chứng chỉ Selenium Python 101 từ LambdaTest

Phần kết luận

Trong hướng dẫn Selenium Python này, chúng tôi đã trình bày chi tiết cửa sổ là gì và cách xử lý nhiều cửa sổ khi chúng xuất hiện trong thử nghiệm bằng Selenium Python. Chúng ta đã xem xét hai loại cửa sổ—cửa sổ cha và cửa sổ con. Chúng tôi đã viết các kịch bản thử nghiệm triển khai xử lý cửa sổ cho một cửa sổ con và nhiều cửa sổ con. Chúng tôi cũng đã xem xét cách quay lại cửa sổ chính sau khi hoàn thành các thao tác trên cửa sổ con

Tôi hy vọng blog này về cách xử lý nhiều cửa sổ trong Selenium Python sẽ giúp ích cho bạn trong khi thực hiện kiểm thử tự động

Câu hỏi thường gặp [FAQ]

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

window_handles là danh sách id cửa sổ. Nó lưu trữ tất cả thông tin về các cửa sổ đang mở trong python. Cú pháp lưu id cửa sổ như sau

window_handles = [Cửa sổ1, Cửa sổ2, Cửa sổ3]

Nó có thể được sử dụng để chuyển đổi giữa các cửa sổ khác nhau bằng cách sử dụng phương thức switch_to. Cú pháp chuyển giữa các cửa sổ như sau

Cửa sổ1 = hệ thống. switch_to[Window2]

Để chuyển đổi giữa hai cửa sổ, chúng ta cần lưu trữ id của cửa sổ đầu tiên và sau đó sử dụng nó khi muốn chuyển sang cửa sổ khác

Đâu là sự khác biệt giữa getWindowHandles[] và getWindowHandle[]?

Các phương thức getWindowHandles và getWindowHandle có thể được sử dụng để xử lý các cửa sổ con. Phương thức getWindowHandles lưu trữ tất cả các tay cầm cửa sổ đã mở trong cấu trúc dữ liệu Set. Phương thức getWindowHandle được sử dụng để lưu trữ tiêu điểm xử lý cửa sổ của cửa sổ trình duyệt

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

window_handles được sử dụng để làm việc với các cửa sổ khác nhau. Nó lưu trữ các id cửa sổ được sử dụng để chuyển đổi. switch_to. phương thức cửa sổ được sử dụng để chuyển đổi giữa các cửa sổ với sự trợ giúp của id window_handles .

Làm cách nào để chuyển sang cửa sổ hiện tại trong Selenium?

Theo mặc định, trình điều khiển có tiêu điểm trên cửa sổ chính. Để chuyển tiêu điểm sang tab mới, hãy switchTo[]. phương pháp cửa sổ được sử dụng . Phương thức getWindowHandle được sử dụng để giữ id cửa sổ của tab đang hoạt động và sau đó nó được chuyển thành tham số cho switchTo[].

Làm cách nào để chuyển tab trong Selenium Python?

Chúng ta có thể chuyển đổi các tab trình duyệt khác nhau bằng trình quản trị web Selenium trong Python bằng phương thức switch_to. cửa sổ . Theo mặc định, trình điều khiển web có quyền truy cập vào cửa sổ chính. Khi một tab trình duyệt khác được mở, switch_to.

Làm cách nào để chuyển sang khung trong Selenium Python?

Chuyển đổi giữa các IFrame bằng Selenium Python. Nếu một trang web chứa nhiều IFrame, thì chúng tôi sẽ cần chuyển đổi giữa chúng. Selenium Python API cung cấp “ switch_to. iframe [self, frame_reference] ” để di chuyển đến một IFrame cụ thể.

Chủ Đề