Python 中 Selenium 的隐式等待是什么?


在使用 Selenium 时,可能会遇到这种情况:浏览器加载页面后,网页元素会在不同的时间间隔内加载。

这种类型的状况会导致 Selenium 和页面上的网页元素之间出现同步问题。由于 DOM 中不存在该元素,因此无法识别元素。由于此原因,会抛出 ElementNotVisibleException 等异常。

Selenium 中的等待概念克服了这个问题,并在元素识别和对其执行操作之间设置了延迟。隐式等待可以被认为是测试用例中测试步骤的默认等待时间。

隐式等待是应用于页面上所有元素的全局等待。等待时间作为参数提供给方法。例如,如果等待时间为 5 秒,则它将在抛出超时异常之前等待此时间段。

隐式等待是动态等待,这意味着如果元素在第三秒可用,那么我们将继续执行测试用例的下一步,而不是等待全部五秒。

隐式等待指示 Web 驱动程序轮询特定时间段。确定此时间后,它将保留整个驱动程序会话。隐式等待的默认时间为 0。

语法

driver.implicitly_wait(2)

下面列出了隐式等待的一些缺点:

  • 测试执行时间增加。
  • 无法捕获应用程序中与性能相关的问题。

示例

使用隐式等待的代码实现。

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://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()

更新于: 2020年7月28日

2K+ 阅读量

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告