📜  Selenium Python中的隐式等待

📅  最后修改于: 2022-05-13 01:55:19.022000             🧑  作者: Mango

Selenium Python中的隐式等待

Selenium Python是测试自动化的绝佳工具之一。如今,大多数 Web 应用程序都使用 AJAX 技术。当浏览器加载页面时,该页面中的元素可能会以不同的时间间隔加载。这使得定位元素变得困难:如果元素还没有出现在 DOM 中,定位函数将引发 ElementNotVisibleException 异常。使用等待,我们可以解决这个问题。等待在执行的操作之间提供了一些时间间隔——主要是定位一个元素或使用该元素进行的任何其他操作。 Selenium Webdriver 提供两种类型的等待——隐式和显式。本文围绕Selenium Python中的隐式等待展开。

隐式等待
隐式等待告诉 WebDriver 在尝试查找任何不立即可用的元素(或多个元素)时轮询 DOM 一段时间。默认设置为 0。一旦设置,就会在 WebDriver 对象的生命周期内设置隐式等待。让我们考虑一个例子——

# import webdriver
from selenium import webdriver
  
driver = webdriver.Firefox()
  
# set implicit wait time
driver.implicitly_wait(10) # seconds
  
# get url
driver.get("http://somedomain / url_that_delays_loading")
  
# get element after 10 seconds
myDynamicElement = driver.find_element_by_id("myDynamicElement")

这会在抛出 TimeoutException 之前等待最多 10 秒,除非它找到要在 10 秒内返回的元素。

如何在Selenium Python中创建隐式等待?

定义的隐式等待将是使用驱动程序的隐式等待方法的集合。让我们在 https://www.geeksforgeeks.org/ 上实现它,并在定位元素之前等待 10 秒。

# import webdriver 
from selenium import webdriver 
  
# create webdriver object 
driver = webdriver.Firefox() 
    
# set implicit wait time
driver.implicitly_wait(10) # seconds
  
# get geeksforgeeks.org 
driver.get("https://www.geeksforgeeks.org/") 
    
# get element after 10 seconds
element = driver.find_element_by_link_text("Courses")
  
# click element
element.click()
  

输出 -
首先它打开 https://www.geeksforgeeks.org/ 然后找到课程链接
驱动方法-Selenium-Python

它点击课程链接并被重定向到 https://practice.geeksforgeeks.org/

动作链-硒-Python