Hướng dẫn what is implicit wait in selenium python? - chờ đợi tiềm ẩn trong trăn selen là gì?

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọc

    Bàn luận
    An implicit wait tells WebDriver to poll the DOM for a certain amount of time when trying to find any element (or elements) not immediately available. The default setting is 0. Once set, the implicit wait is set for the life of the WebDriver object. Let’s consider an example –

    Selenium Python là một trong những công cụ tuyệt vời để kiểm tra tự động hóa. Ngày nay, hầu hết các ứng dụng web đang sử dụng các kỹ thuật AJAX. Khi một trang được tải bởi trình duyệt, các phần tử trong trang đó có thể tải ở các khoảng thời gian khác nhau. Điều này làm cho việc định vị các yếu tố khó khăn: nếu một phần tử chưa có trong DOM, hàm định vị sẽ tăng ngoại lệ phần tử. Sử dụng chờ đợi, chúng ta có thể giải quyết vấn đề này. Chờ đợi cung cấp một số sự chậm chạp giữa các hành động được thực hiện - chủ yếu là định vị một phần tử hoặc bất kỳ hoạt động nào khác với phần tử. Selenium WebDriver cung cấp hai loại chờ đợi - ngầm & rõ ràng. Bài viết này xoay quanh sự chờ đợi ngầm trong Selenium Python.

    Chờ đợi Insplicit Waitsan nói với WebDriver sẽ thăm dò DOM trong một khoảng thời gian nhất định khi cố gắng tìm bất kỳ yếu tố (hoặc phần tử) nào không có sẵn ngay lập tức. Cài đặt mặc định là 0. Sau khi được đặt, sự chờ đợi ngầm được đặt cho tuổi thọ của đối tượng WebDriver. Hãy xem xét một ví dụ -

    from selenium import webdriver

    self.driver.implicitly_wait(100) # seconds
    btn = WebDriverWait(driver, 10).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    0____11
    self.driver.implicitly_wait(100) # seconds
    btn = WebDriverWait(driver, 10).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    2

    self.driver.implicitly_wait(100) # seconds
    btn = WebDriverWait(driver, 10).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    3
    self.driver.implicitly_wait(100) # seconds
    btn = WebDriverWait(driver, 10).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    4
    self.driver.implicitly_wait(100) # seconds
    btn = WebDriverWait(driver, 10).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    5

    self.driver.implicitly_wait(100) # seconds btn = WebDriverWait(driver, 10).until( lambda wd: wd.find_element_by_css_selector('someCSS') ) 6self.driver.implicitly_wait(100) # seconds btn = WebDriverWait(driver, 10).until( lambda wd: wd.find_element_by_css_selector('someCSS') ) 1 self.driver.implicitly_wait(100) # seconds btn = WebDriverWait(driver, 10).until( lambda wd: wd.find_element_by_css_selector('someCSS') ) 8self.driver.implicitly_wait(100) # seconds btn = WebDriverWait(driver, 10).until( lambda wd: wd.find_element_by_css_selector('someCSS') ) 9self.driver.implicitly_wait(10) # seconds btn = WebDriverWait(driver, 11).until( lambda wd: wd.find_element_by_css_selector('someCSS') ) 0

    Điều này chờ lên đến 10 giây trước khi ném một thời gian chờ trừ khi nó tìm thấy phần tử sẽ trở lại trong vòng 10 giây.

    Làm thế nào để tạo ra một sự chờ đợi ngầm trong Selenium Python?

    Chờ đợi ngầm như được xác định sẽ là tập hợp sử dụng phương thức trình điều khiển ngầm định_wait. Hãy để thực hiện điều này trên https://www.geeksforgeeks.org/ và đợi 10 giây trước khi định vị một phần tử.

    self.driver.implicitly_wait(100) # seconds
    btn = WebDriverWait(driver, 10).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    3
    self.driver.implicitly_wait(100) # seconds
    btn = WebDriverWait(driver, 10).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    4
    self.driver.implicitly_wait(100) # seconds
    btn = WebDriverWait(driver, 10).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    5

    from selenium import

    self.driver.implicitly_wait(10) # seconds
    btn = WebDriverWait(driver, 11).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    4

    self.driver.implicitly_wait(5) # seconds
    btn = WebDriverWait(driver, 15).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    6

    self.driver.implicitly_wait(100) # seconds
    btn = WebDriverWait(driver, 10).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    0____11
    self.driver.implicitly_wait(10) # seconds
    btn = WebDriverWait(driver, 11).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    7

    First it opens https://www.geeksforgeeks.org/ and then finds Courses link
    Hướng dẫn what is implicit wait in selenium python? - chờ đợi tiềm ẩn trong trăn selen là gì?

    self.driver.implicitly_wait(5) # seconds
    btn = WebDriverWait(driver, 15).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    1
    self.driver.implicitly_wait(100) # seconds
    btn = WebDriverWait(driver, 10).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    1
    self.driver.implicitly_wait(5) # seconds
    btn = WebDriverWait(driver, 15).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    3
    self.driver.implicitly_wait(5) # seconds
    btn = WebDriverWait(driver, 15).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    4
    self.driver.implicitly_wait(10) # seconds
    btn = WebDriverWait(driver, 11).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    
    0

    Hướng dẫn what is implicit wait in selenium python? - chờ đợi tiềm ẩn trong trăn selen là gì?


    Từ: https://selenium-python.readthedocs.io/waits.html#implict-waits

    Một sự chờ đợi ngầm cho WebDriver bỏ phiếu DOM trong một khoảng thời gian nhất định khi cố gắng tìm bất kỳ yếu tố (hoặc phần tử) nào không có sẵn ngay lập tức.

    Cú pháp này nên được sử dụng cho Python:

    self.driver.implicitly_wait(10) # seconds
    

    Hành vi chờ đợi ngầm là một cấp độ rất thấp, vì vậy nó sẽ ảnh hưởng đến các hoạt động khác, như chờ đợi rõ ràng.

    Điều này sẽ hoạt động 100 giây nếu không có yếu tố như vậy:

    self.driver.implicitly_wait(100) # seconds
    btn = WebDriverWait(driver, 10).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    

    Điều này sẽ hoạt động 20 giây nếu không có yếu tố như vậy (cần kiểm tra lại):

    self.driver.implicitly_wait(10) # seconds
    btn = WebDriverWait(driver, 11).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    

    Điều này sẽ hoạt động 15 giây nếu không có yếu tố như vậy:

    self.driver.implicitly_wait(5) # seconds
    btn = WebDriverWait(driver, 15).until(
             lambda wd: wd.find_element_by_css_selector('someCSS')  )
    


    Trong khi làm việc với selenium, có thể có các tình huống khi chúng ta thấy rằng sau khi tải trang của trình duyệt, các yếu tố web đang được tải trong các khoảng thời gian khác nhau.

    Loại tình huống này dẫn đến việc đồng bộ hóa các vấn đề giữa selen và phần tử web trên trang. Việc xác định các yếu tố không xảy ra do sự vắng mặt của yếu tố đó trong DOM. Ngoại lệ như ElementNotvisibleException được ném do điều này.

    Khái niệm chờ đợi trong selen vượt qua vấn đề này và gây ra sự chậm trễ giữa các yếu tố nhận dạng và hành động được thực hiện trên chúng. Một sự chờ đợi ngầm có thể được coi là thời gian chờ mặc định cho các bước kiểm tra trong trường hợp thử nghiệm.

    Chờ đợi ngầm là một sự chờ đợi toàn cầu được áp dụng cho tất cả các yếu tố trên trang. Thời gian chờ được cung cấp dưới dạng đối số cho phương thức. Ví dụ: nếu thời gian chờ là 5 giây, sẽ đợi khoảng thời gian này trước khi ném một ngoại lệ thời gian chờ.

    Chờ đợi ngầm là một sự chờ đợi động, có nghĩa là nếu phần tử có sẵn ở giây thứ ba, thì chúng ta sẽ chuyển sang bước tiếp theo của trường hợp thử nghiệm thay vì chờ toàn bộ năm giây.

    Một sự chờ đợi ngầm thông báo cho tài xế web để thăm dò ý kiến ​​trong một khoảng thời gian cụ thể. Khi thời gian này được xác định, nó vẫn còn cho toàn bộ phiên trình điều khiển. Thời gian mặc định của một sự chờ đợi ngầm là 0.

    Cú pháp

    driver.implicitly_wait(2)

    Một số nhược điểm của sự chờ đợi ngầm được liệt kê dưới đây -

    • Thời gian thực hiện thử nghiệm tăng lên.
    • Không bắt được các vấn đề liên quan đến hiệu suất trong ứng dụng.

    Thí dụ

    Thực hiện mã với sự chờ đợi ngầm.

    from selenium import webdriver
    #browser exposes an executable file
    #Through Selenium test we will invoke the executable file which will then
    #invoke actual browser
    driver = webdriver.Chrome(executable_path="C:\chromedriver.exe")
    #setting implicit wait 5 seconds
    driver.implicitly_wait(5)
    # to maximize the browser window
    driver.maximize_window()
    #get method to launch the URL
    driver.get("https://www.tutorialspoint.com/about/about_careers.htm")
    #to refresh the browser
    driver.refresh()
    # identifying the link with link_text locator
    driver.find_element_by_link_text("Company").click()
    #to close the browser
    driver.quit()

    Hướng dẫn what is implicit wait in selenium python? - chờ đợi tiềm ẩn trong trăn selen là gì?

    Cập nhật vào ngày 28 tháng 3-2020 15:21:57

    • Câu hỏi và câu trả lời liên quan
    • Chờ đợi rõ ràng trong selen với Python là gì?
    • Chờ đợi ngầm thực hiện gì?
    • Đợi cho đến khi trang được tải với selenium webdriver cho Python.
    • Sự khác biệt giữa sự chờ đợi ngầm và rõ ràng trong selen với Python là gì?
    • Xpath trong selen với python là gì?
    • C# và selenium: Đợi cho đến khi phần tử có mặt
    • Làm cho selen phải đợi 10 giây.
    • Cần selen để đợi cho đến khi tài liệu đã sẵn sàng
    • Làm thế nào để đợi cho đến khi một yếu tố có mặt trong selenium?
    • Các loại chờ khác nhau có sẵn trong selenium là gì?
    • Đối tượng tiềm ẩn trong JSP là gì?
    • Thực hành tốt nhất để chờ đợi một sự thay đổi với selenium webdriver?
    • Đợi trang phức tạp với JavaScript để tải bằng Selenium.
    • Selenium với C Sharp - Làm thế nào để thực hiện phương pháp chờ rõ ràng?
    • Cần đợi cho đến khi trang hoàn toàn được tải - Selenium WebDriver

    Chờ đợi ngầm và rõ ràng là gì trong Python selenium là gì?

    Chờ rõ ràng trong selen nếu một người đặt lệnh chờ đợi, thì trình duyệt sẽ đợi cùng một khung thời gian trước khi tải mọi yếu tố web. Điều này gây ra sự chậm trễ không cần thiết trong việc thực thi tập lệnh kiểm tra. Chờ đợi rõ ràng là thông minh hơn, nhưng chỉ có thể được áp dụng cho các yếu tố được chỉ định.If one sets an implicit wait command, then the browser will wait for the same time frame before loading every web element. This causes an unnecessary delay in executing the test script. Explicit wait is more intelligent, but can only be applied for specified elements.

    Tại sao chúng ta cần chờ đợi ngầm?

    Chờ đợi ngầm được sử dụng để cung cấp thời gian chờ mặc định giữa mỗi bước/lệnh kiểm tra liên tiếp trên toàn bộ tập lệnh kiểm tra.Do đó, bước thử nghiệm tiếp theo sẽ chỉ thực hiện khi lượng thời gian được chỉ định đã trôi qua sau khi thực hiện lệnh/lệnh thử nghiệm trước đó.to provide a default waiting time between each consecutive test step/command across the entire test script. Thus, the subsequent test step would only execute when the specified amount of time has elapsed after executing the previous test step/command.

    Sự khác biệt giữa giấc ngủ và chờ đợi ngầm là gì?

    Chờ đợi để kiểm tra tự động hóa với selenium điểm quan trọng cần lưu ý ở đây là, không giống như luồng.Ngủ (), nó không chờ đợi thời gian hoàn chỉnh.Trong trường hợp nó tìm thấy phần tử trước thời lượng được chỉ định, nó sẽ chuyển sang dòng thực thi mã tiếp theo, do đó giảm thời gian thực hiện tập lệnh.it does not wait for the complete duration of time. In case it finds the element before the duration specified, it moves on to the next line of code execution, thereby reducing the time of script execution.

    Sự khác biệt giữa chờ đợi ngầm là gì?

    Chờ đợi: Khi được tạo, còn sống cho đến khi đối tượng WebDriver chết.Và giống như phổ biến cho tất cả các hoạt động.Trong khi đó, sự chờ đợi rõ ràng, có thể được khai báo cho một hoạt động cụ thể tùy thuộc vào hành vi của WebEuity.