Python crawler's Selenium set element wait method

  • 2021-08-12 02:58:58
  • OfStack

1. Explicit wait

The WebDriverWait class is a wait method provided by WebDirver. In the set time, the default is to check whether the current page element exists once every 1 period of time, and if it cannot be detected beyond the set time, an exception will be thrown (TimeoutException)


from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')

element = WebDriverWait(driver, 5, 0.5).until(
      EC.presence_of_element_located((By.ID, "kw"))
      )
element.send_keys('selenium')
time.sleep(5)

driver.quit()

Syntax:

WebDriverWait (driver, timeout, poll_frequency=0. 5, ignored_exceptions=None). until (method, message= '')

The parameters are described as follows:

driver: Browser driver timeout: Maximum timeout, in seconds by default poll_frequency: The interval between detections, the default is 0.5 s ignored_exceptions: Exception information after timeout. NoSuchElementException exception is thrown by default until (method, message= ''): Call the driver provided by this method as a parameter until the return value is True until_not (method, message= ''): Call the driver provided by this method as a parameter until the return value is False presence_of_element_located (): Determines whether the element exists.

2. Implicit wait


from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import time

driver = webdriver.Chrome()

#  Set implicit wait to 5 Seconds 
driver.implicitly_wait(5)
driver.get("http://www.baidu.com")

try:
 print(time.strftime('%Y-%m-%d %H:%M:%S'))
 driver.find_element_by_id("123456").send_keys('selenium') # Nonexistent id See the output error report and time 
 # driver.find_element_by_id("kw").send_keys('selenium') #  Existent id
except NoSuchElementException as e:
 print(e)
finally:
 print(time.strftime('%Y-%m-%d %H:%M:%S'))
 driver.quit()

implicitly_wait () defaults to 0, and the unit of the parameter is seconds. The waiting time set above is 5 seconds, which is not like time. sleep (5). When the execution process is located to an element, if the element can be located, continue to execute; If the element is not located, it will constantly determine whether the element is located in a loop. For example, if it is located in 1 second, if it runs directly down, an exception will be thrown if it exceeds the set time.

Selenium Collection Portal:

标题 简介
Python爬虫 - Selenium(1)安装和简单使用 详细介绍Selenium的依赖环境在Windows和Centos7上的安装及简单使用
Python爬虫 - Selenium(2)元素定位和WebDriver常用方法 详细介绍定位元素的8种方式并配合点击和输入、提交、获取断言信息等方法的使用
Python爬虫 - Selenium(3)控制浏览器的常用方法 详细介绍自定义浏览器窗口大小或全屏、控制浏览器后退、前进、刷新浏览器等方法的使用
Python爬虫 - Selenium(4)配置启动项参数 详细介绍Selenium启动项参数的配置,其中包括无界面模式、浏览器窗口大小设置、浏览器User-Agent (请求头)等等
Python爬虫 - Selenium(5)鼠标事件 详细介绍鼠标右击、双击、拖动、鼠标悬停等方法的使用
Python爬虫 - Selenium(6)键盘事件 详细介绍键盘的操作,几乎包含所有常用按键以及组合键
Python爬虫 - Selenium(7)多窗口切换 详细介绍Selenium是如何实现在不同的窗口之间自由切换
Python爬虫 - Selenium(8)frame/iframe表单嵌套页面 详细介绍如何从当前定位的主体切换为frame/iframe表单的内嵌页面中
Python爬虫 - Selenium(9)警告框(弹窗)处理 详细介绍如何定位并处理多类警告弹窗
Python爬虫 - Selenium(10)下拉框处理 详细介绍如何灵活的定位并处理下拉框
Python爬虫 - Selenium(11)文件上传 详细介绍如何优雅的通过send_keys()指定文件进行上传
Python爬虫 - Selenium(12)获取登录Cookies,并添加Cookies自动登录 详细介绍如何获取Cookies和使用Cookies进行自动登录
Python爬虫 - Selenium(13)设置元素等待 详细介绍如何优雅的设置元素等待时间,防止程序运行过快而导致元素定位失败
Python爬虫 - Selenium(14)窗口截图 详细介绍如何使用窗口截图
Python爬虫 - Selenium(15)关闭浏览器 详细介绍两种关闭窗口的区别


Related articles: