当前位置:网站首页>Selenium waiting mode
Selenium waiting mode
2022-07-06 01:38:00 【Live up to your youth】
summary
stay selenium in , Waiting refers to waiting for the completion of the previous task before executing the next task , Before the previous task is completed , The latter task will always be in a blocking state , It is somewhat similar to transactions in a database . such as , Before locating the element, you need to load DOM.selenium There are three ways to wait : According to wait 、 An implicit wait 、 Smooth waiting .
The way
According to wait
WebDriverWait(driver, timeout).until(method, message)
Show waiting is selenium The imperative process language that customers can use . They allow your code to pause program execution , Or freeze threads , Until the conditions for passing are met . This condition will always be called at a certain frequency , Until the waiting times out . This means that as long as the condition returns a false value , It will keep trying and waiting . This method is also the most commonly used method .
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
driver = webdriver.Chrome()
driver.get("http://www.example.com")
# Set implicit wait
# locator It can be tuples (), aggregate {}, Tabular form
# function presence_of_element_located Indicates the DOM Whether there is an element on
# If html There is no label in p The elements of , Then wait for three seconds and throw an exception
WebDriverWait(driver, timeout=3).until(expected_conditions.presence_of_element_located({By.TAG_NAME, "p"}))
# If html There are tags in p The elements of , Then find this element
element = driver.find_element(By.TAG_NAME, "p")
An implicit wait
driver.implicitly_wait(time_to_wait)
An implicit wait ,WebDriver Poll for a certain amount of time when trying to find any element DOM. If the element doesn't exist , An exception will be thrown after the set time . It is useful when some elements on a web page are not immediately available and take some time to load .
Implicit waiting is telling WebDriver If you poll for one or more elements that are not immediately available DOM A span . The default setting is 0, Disable . Once set up , Implicit waiting is set as the life cycle of the session . in other words , After setting the implicit wait , When performing any operation, such as finding elements , There is a certain time limit , If it goes beyond that time , Will throw an exception .
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
# Set implicit wait , The waiting time is 5 second
driver.implicitly_wait(5)
# After setting the implicit wait , If 5 The target is not obtained within seconds DOM, Throw an exception
driver.get("http://www.example.com")
# After setting the implicit wait , If 5 No element was obtained within seconds a, Throw an exception
element = driver.find_element(By.TAG_NAME, "a")
Smooth waiting
WebDriverWait(driver, timeout, poll_frequency, ignored_exceptions).until(method, message)
The fluent wait instance defines the maximum amount of time for the wait condition , And the frequency of the inspection conditions . Users can configure waiting to ignore specific types of exceptions when waiting , For example, when searching for elements on the page NoSuchElementException.
from selenium import webdriver
from selenium.common import ElementNotVisibleException, ElementNotSelectableException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
driver = webdriver.Chrome()
driver.get("http://www.example.com")
# Set smooth waiting
# The timeout is 10 second , every other 1 Seconds to check whether ElementNotVisibleException,ElementNotSelectableException These two exceptions , If these two exceptions occur , Ignore it
wait = WebDriverWait(driver, timeout=10, poll_frequency=1, ignored_exceptions=[ElementNotVisibleException,
ElementNotSelectableException])
wait.until(expected_conditions.element_to_be_clickable((By.TAG_NAME, "h")))
element = driver.find_element(By.TAG_NAME, "p")
Because it must be synchronized DOM And instructions are quite common , So most clients also come with a set of predefined waiting conditions . seeing the name of a thing one thinks of its function , They are predefined conditions for frequent wait operations . Here are some optional Waiting conditions :
边栏推荐
- Condition and AQS principle
- 【全网最全】 |MySQL EXPLAIN 完全解读
- 01.Go语言介绍
- Paddle框架:PaddleNLP概述【飛槳自然語言處理開發庫】
- Unity | two ways to realize facial drive
- Unreal browser plug-in
- Open source | Ctrip ticket BDD UI testing framework flybirds
- 【Flask】官方教程(Tutorial)-part3:blog蓝图、项目可安装化
- Leetcode skimming questions_ Invert vowels in a string
- Superfluid_ HQ hacked analysis
猜你喜欢
[技术发展-28]:信息通信网大全、新的技术形态、信息通信行业高质量发展概览
A picture to understand! Why did the school teach you coding but still not
Mongodb problem set
MySQL learning notes 2
插卡4G工业路由器充电桩智能柜专网视频监控4G转以太网转WiFi有线网速测试 软硬件定制
Win10 add file extension
【Flask】官方教程(Tutorial)-part2:蓝图-视图、模板、静态文件
一圖看懂!為什麼學校教了你Coding但還是不會的原因...
1. Introduction to basic functions of power query
A Cooperative Approach to Particle Swarm Optimization
随机推荐
Leetcode 208. 实现 Trie (前缀树)
Huawei converged VLAN principle and configuration
Alibaba canal usage details (pit draining version)_ MySQL and ES data synchronization
MATLB | real time opportunity constrained decision making and its application in power system
Paddle框架:PaddleNLP概述【飛槳自然語言處理開發庫】
XSS learning XSS lab problem solution
Maya hollowed out modeling
【Flask】静态文件与模板渲染
晶振是如何起振的?
Code Review关注点
[机缘参悟-39]:鬼谷子-第五飞箝篇 - 警示之二:赞美的六种类型,谨防享受赞美快感如同鱼儿享受诱饵。
Basic operations of databases and tables ----- default constraints
一图看懂!为什么学校教了你Coding但还是不会的原因...
PHP error what is an error?
Ordinary people end up in Global trade, and a new round of structural opportunities emerge
Docker compose配置MySQL并实现远程连接
What is weak reference? What are the weak reference data types in ES6? What are weak references in JS?
一圖看懂!為什麼學校教了你Coding但還是不會的原因...
【Flask】官方教程(Tutorial)-part1:项目布局、应用程序设置、定义和访问数据库
02.Go语言开发环境配置