Bài viết này là một phần của Trung tâm nội dung của chúng tôi. Để biết thêm các tài nguyên chuyên sâu, hãy xem trung tâm nội dung của chúng tôi trên Hướng dẫn Selenium Python Show
Một trong những yêu cầu chính để tự động hóa các tương tác với WebElement trong DOM là nó phải hiển thị và có thể tương tác được. Giống như tôi, bạn cũng sẽ gặp một số tình huống trong đó các tập lệnh Selenium Python của bạn đã tạo ra một ElementNotVisibleException Lỗi trong tập lệnh tự động hóa thử nghiệm có thể là do sự hiện diện của WebElements động trên trang web. WebElement đang thử nghiệm có thể chưa được tải trên trang web và thử nghiệm của bạn đang cố thực hiện một số hoạt động trên WebElement đó. Được biết, tải nội dung động bằng AJAX được sử dụng rộng rãi trên các sản phẩm web (hoặc trang web) khác nhau. Khi tương tác với WebElements động bằng cách sử dụng tự động kiểm tra Selenium, bạn nên thêm Selenium đợi trang tải để phần tử có sẵn để thực hiện kiểm tra Chờ đợi Selenium trong Python cung cấp thêm thời gian để tải WebElements trong DOM. Trong bài viết này, chúng tôi đi sâu vào các loại chờ khác nhau trong Selenium WebDriver cùng với việc sử dụng Selenium chờ tải trang trong Python Tại sao nên sử dụng Selenium Đợi trang tải?Để trả lời câu hỏi này, điều cần thiết là phải hiểu 'ở đâu' và 'tại sao' tải trang động. Một số điều kiện được đề cập dưới đây có thể bạn đã biết hoặc bạn có thể đã gặp phải chúng Trường hợp 1. Đang tải tệp lên Tôi chắc chắn rằng bạn có thể đã tải lên một số tệp, hình ảnh hoặc video trên một nền tảng trực tuyến nào đó. Bạn có thể nhận thấy rằng khi bạn chọn tệp, sẽ mất một chút thời gian để tải tệp đó lên. TRÊN các dòng tương tự, khi bạn cố gắng tải tệp lên bằng cách sử dụng tập lệnh tự động kiểm tra Selenium, bạn sẽ cần triển khai Selenium Wait trong Python để thực hiện tải tệp lên thành công. thành công. Nếu bạn không sử dụng Selenium đợi trang tải sau khi tải lên, bạn có thể gặp một số lỗi Trường hợp 2. Thông báo xác nhận bị trì hoãn Các ứng dụng như Gmail cho phép người dùng tương tác và làm việc trên cơ sở thời gian thực. Mặc dù bạn có thể tương tác với ứng dụng thông qua usecase gửi email, nhưng bạn không nhận được xác nhận gửi ngay lập tức. Việc xác nhận phụ thuộc vào một số yếu tố như tính khả dụng của mạng, kích thước tệp đính kèm, v.v. Là một kỹ sư QA, chúng ta cần tính đến các điều kiện như vậy khi lập kế hoạch và thực hiện các bài kiểm tra khả năng sử dụng và mức độ chấp nhận của người dùng. Đối với Python, bạn sẽ phải triển khai Selenium Chờ tải trang để đảm bảo rằng các thử nghiệm được thực hiện với các WebElements cần thiết trong DOM Trường hợp 3. Tải phần tử trang có điều kiện Một số trang web có một số thành phần hoặc yếu tố bị ẩn hoặc không hiển thị ở giai đoạn đầu. Chúng chỉ có thể được tương tác sau khi đáp ứng một số điều kiện đặt trước. Ví dụ: Trên trang web bán vé xem phim, nút đặt chỗ chỉ khả dụng sau một khoảng thời gian đặt trước. Đây là trường hợp điển hình của việc tải các thành phần trang có điều kiện. Để xử lý các tình huống như vậy trong các tập lệnh tự động hóa thử nghiệm, bạn sẽ cần triển khai Selenium chờ tải trang Selenium đợi để đảm bảo trang tải được áp dụng trong các trường hợp khác như bỏ qua quảng cáo trong YouTube, tải chậm hình ảnh trong các trang web, v.v. Bắt đầu thử nghiệm tự động hóa Python miễn phí của bạn ngay hôm nay Chứng nhận này dành cho các chuyên gia muốn phát triển kiến thức chuyên môn nâng cao, thực hành về thử nghiệm tự động hóa Selenium với Python và đưa sự nghiệp của họ lên một tầm cao mới Dưới đây là thông tin ngắn gọn về chứng nhận Selenium Python 101 từ LambdaTest Các loại khác nhau của Python Selenium ChờSelenium WebDriver cung cấp gói "chờ" để xử lý các điều kiện mà bạn cần đợi trước khi tương tác với các WebElements mục tiêu. Bạn cũng có thể tận dụng chức năng 'Ngủ' của Python để đợi trong một khoảng thời gian xác định, tuy nhiên, cách tiếp cận đó không phải là cách được khuyến nghị Có ba cách khác nhau để triển khai Selenium Chờ trong Python để tải trang
Chờ đợi rõ ràng trong Selenium PythonChờ đợi rõ ràng được giới thiệu để tạm thời đóng băng việc thực thi tập lệnh tự động kiểm tra Selenium. Nó sử dụng các chức năng có sẵn trong gói chờ của Selenium WebDriver. Chương trình tạm dừng thực hiện trong một thời gian xác định hoặc cho đến khi một điều kiện dự kiến nhất định được đáp ứng Chờ đợi rõ ràng có thể được thực hiện bằng cách sử dụng lớp WebDriverWait của các liên kết python Selenium. Hãy xem lớp WebDriverWait lớp selen. webdriver. ủng hộ. Chờ đã. WebDriverWait(trình điều khiển, thời gian chờ, poll_frequency=0. 5, bỏ qua_ngoại lệ=Không có) Như bạn có thể thấy, nó chấp nhận hai tham số bắt buộc. trình điều khiển và thời gian chờ; . thăm dò_tần suất và bỏ qua_ngoại lệ
Bên cạnh __init__, lớp WebDriverWait cũng chứa hàm đối tượng __repr__ trả về biểu diễn đối tượng ở định dạng chuỗi khi hàm repr() được gọi trên một đối tượng. Nói một cách đơn giản hơn, hàm repr() được sử dụng bởi các hàm khác của lớp WebDriverWait để ghi lại thông tin hữu ích về đối tượng mà nó được gọi Hai chức năng quan trọng của lớp WebDriverWait được sử dụng để đưa ra các điều kiện là cho đến khi và cho đến khi_không
WebDriverWait tăng TimeoutException nếu phương thức không trả về True cho đến khi hoặc Sai cho đến khi_not Thí dụ WebDriverWait(trình điều khiển, 10). cho đến khi (EC. sự hiện diện_of_element_location((Bởi. ID, "chờTạo"))) Điều kiện mong đợi trong Selenium là một lớp tiện lợi được sử dụng nhiều với lớp WebDriverWait của Selenium. EC phổ biến nhất bao gồm
Xem video này để tìm hiểu những gì đang chờ trong Selenium và cách xử lý chúng bằng các phương pháp khác nhau như tạm dừng được mã hóa cứng và bằng cách kết hợp các chờ rõ ràng với các mẫu thiết kế khác nhau Chờ đợi ngầm định trong Selenium PythonThời gian chờ ngầm định được triển khai bằng cách sử dụng hàm implicitly_wait(time_to_wait). Điều này đặt thời gian chờ cố định cho mỗi phiên (tôi. e. thời gian chờ thực hiện lệnh hoặc tìm phần tử trong phiên). Có rất nhiều sự khác biệt giữa chờ đợi ngầm định và chờ đợi rõ ràng trong Selenium Tại đây, WebDriver thăm dò DOM để tìm một WebElement trong một khoảng thời gian xác định trước khi đưa ra một ngoại lệ. Giá trị đối số time_to_wait mặc định được đặt thành “0”. Có, điều đó có nghĩa là nó bị tắt theo mặc định Thí dụ- tài xế. ngầm_chờ(10) Đọc – Chờ ngầm định và Chờ đợi rõ ràng trong Selenium PHP Chờ đợi trôi chảy trong Selenium PythonChờ thông thạo tương tự như Chờ rõ ràng nhưng chúng vẫn được phân loại thành các loại chờ khác nhau trong tài liệu chính thức của Selenium. Tại sao các tài liệu liệt kê chúng là hai loại khác nhau? . e, sử dụng ít chuyên biệt hơn, ít kiểm soát hơn đối với các chức năng bên trong của lớp WebDriverWait) Trong các tài liệu, họ đã minh họa bằng cách sử dụng 2 đối số này trong phần Chờ thông thạo để có thêm quyền kiểm soát đối với những ngoại lệ nào sẽ bị bỏ qua và tần suất trình điều khiển nên thăm dò DOM. Nói một cách rõ ràng, sự chờ đợi trôi chảy là cách sử dụng rõ ràng hơn của sự chờ đợi rõ ràng Thí dụ- WebDriverWait(trình điều khiển, 7, poll_frequency=5). cho đến khi (EC. alert_is_present(), 'Đã hết thời gian chờ cảnh báo đơn giản xuất hiện') Đọc – Chờ rõ ràng và Chờ thông thạo trong Selenium C# [Hướng dẫn] trình diễn. Selenium Đợi trang tảiBây giờ hãy xem xét một ví dụ đơn giản để chứng minh việc sử dụng Selenium chờ đợi để đảm bảo tải trang. Tập lệnh HTML bên dưới sẽ được sử dụng để trình diễn
Nhấp vào nút để tạo phần tử BUTTON bằng văn bản
Phần tử nút được tạo sau 3 giây Thử nó var btn = tài liệu. createElement("NÚT"); btn. InternalHTML = "BẤM VÀO TÔI"; tài liệu. cơ thể người. appendChild(btn); setTimeout(function () { alert("Tôi được tạo sau 2 giây nút waitCreate. "); }, 2000); Khi được thực thi, trang sẽ hiển thị dưới dạng Bây giờ khi bạn sẽ cố gắng nhấp vào nút Hãy thử
Điều này chỉ có thể thực hiện được với sự trợ giúp của Selenium wait. Điều này khiến nút BẤM VÀO TÔI tải, chỉ sau 3 giây kể từ khi nhấp vào nút Dùng thử và hộp cảnh báo xuất hiện sau 2 giây tương ứng Trong phần sắp tới, chúng tôi sẽ trình bày cách đợi khi tương tác với các WebElements này (i. e. nút và hộp cảnh báo bằng cách sử dụng Python Selenium Chờ). Và chúng tôi cũng sẽ hiển thị thời gian thực hiện bởi các phương pháp tương ứng để thăm dò DOM và thực thi các lệnh Cách triển khai Chờ rõ ràng và Chờ thông thạo trong Selenium bằng PythonXem xét triển khai sau sử dụng trang web trên để nhận ra Selenium đợi trang tải đầu ra Đây là kết quả thực thi khi tập lệnh tự động hóa thử nghiệm Selenium được chạy trên Selenium Grid dựa trên đám mây của LambdaTest Quan sát thời gian thực hiện để tìm các yếu tố. Nút “BẤM VÀO TÔI” được thăm dò bằng cách sử dụng poll_frequency mặc định của WebDriverWait là 500 mili giây. Mặc dù chúng tôi đã đưa ra đối số thời gian chờ là 10 giây, nhưng sự hiện diện của nút BẤM VÀO TÔI đã được xác định trong đúng ba giây (i. e. thời gian sau đó nó được tạo khi chúng tôi nhấp vào nút “Dùng thử”) Nhưng sự hiện diện của cảnh báo được thăm dò bằng cách sử dụng poll_frequency trong 5 giây. Vì vậy, mặc dù thực tế là cảnh báo chỉ xuất hiện sau hai giây tạo nút BẤM VÀO TÔI, nhưng Fluent WebDriver phải mất 5 giây để xác định sự hiện diện của nó. Điều này chắc chắn làm rõ việc sử dụng poll_frequency Xem nhanh video thực thi trên nền tảng LambdaTest sẽ đưa ra dấu hiệu cho thấy quá trình chờ đang hoạt động như mong đợi Đọc – Cách đo thời gian tải trang bằng Selenium CHẠY KẾ HOẠCH PYTHON CỦA BẠN TRÊN LƯỚI SELENIUM Hơn 3000 trình duyệt VÀ hệ điều hành ĐĂNG KÝ MIỄN PHÍ Cách triển khai Chờ ngầm định trong Selenium bằng PythonXem xét cách triển khai bên dưới sử dụng Selenium ẩn chờ tải trang. Để cho ngắn gọn, chúng tôi chỉ minh họa việc chờ nút BẤM VÀO TÔI bằng cách sử dụng chức năng chờ ngầm định trong Selenium Python đầu ra Quan sát cách khối thử đầu tiên thành công và không đưa ra bất kỳ sự chờ đợi rõ ràng nào WebDriver chờ nút BẤM VÀO TÔI được tạo Các loại chờ Selenium khác trong PythonCó thêm ba loại chờ đợi trong Selenium Python
polling2 Thư viện cho Selenium Chờ trong PythonBạn cũng có thể sử dụng thư viện polling2 của Python để đợi các phần tử trong Selenium WebDriver. Bạn sẽ phải cài đặt riêng thư viện polling2, sử dụng lệnh bên dưới
Ví dụ sử dụng thư viện polling2 trong Python từ Selenium nhập webdriver trình điều khiển = webdriver. Trình duyệt Chrome() tài xế. lấy ('http. //www. lambdatest. com') email_box = bỏ phiếu2. thăm dò ý kiến (lambda. tài xế. find_element_by_id('useremail'), bước=0. 5, hết giờ = 7) Hộp thư điện tử. send_keys('email@email. com') Phần kết luậnTrong blog này, chúng tôi đã khám phá các thời gian chờ khác nhau khi triển khai Selenium chờ trang tải trong Python. Sự chờ đợi của Selenium sẽ hữu ích khi các thử nghiệm phải được chạy trên WebElements được tải động. Chờ trôi chảy trong Selenium Python cho phép bạn kiểm soát tần suất bỏ phiếu theo mặc định được đặt thành 250 ms trong Chờ rõ ràng. Hãy cho chúng tôi biết bạn đang sử dụng Selenium như thế nào, chờ tải trang bằng Python để xử lý tính năng động của WebElements Làm cách nào để sử dụng đợi cho đến khi trong Selenium Python?Selenium Webdriver cung cấp hai kiểu chờ đợi - ngầm định & rõ ràng. Chờ rõ ràng khiến WebDriver đợi một điều kiện nhất định xảy ra trước khi tiếp tục thực thi . Một sự chờ đợi ngầm khiến WebDriver thăm dò DOM trong một khoảng thời gian nhất định khi cố gắng định vị một phần tử.
Làm cách nào để đợi phần tử xuất hiện trong Selenium?Chờ hoàn toàn chỉ đạo Selenium WebDriver chờ một khoảng thời gian nhất định trước khi đưa ra một ngoại lệ. Khi thời gian này được đặt, WebDriver sẽ đợi phần tử trước khi ngoại lệ xảy ra. Khi lệnh được đặt đúng chỗ, Chờ đợi tiềm ẩn sẽ giữ nguyên vị trí trong toàn bộ thời gian mà trình duyệt đang mở.
Làm cách nào để đợi cho đến khi một phần tử không có trong Selenium Python?Để kiểm tra xem một phần tử có còn tồn tại trên trang hay không, chúng ta có thể nhờ sự trợ giúp của điều kiện dự kiến invisibilityOfElementLocation . Để triển khai các điều kiện chờ rõ ràng, chúng tôi phải nhờ sự trợ giúp của lớp WebDriverWait vàexpectedCondition. |