当前位置:网站首页>What are the waiting methods of selenium
What are the waiting methods of selenium
2022-07-02 09:26:00 【Yisu cloud】
Selenium What are the ways of waiting
This article is about Selenium What are the contents of the waiting mode . Xiaobian thinks it's very practical , So share it for your reference , Let's follow Xiaobian to have a look .
1、 Mandatory waiting (sleep)
from time import sleep sleep(3) # Mandatory waiting 3 second
shortcoming : because Web The speed of loading depends on the hardware being tested 、 Network speed 、 The server Response time and other factors . If the waiting time is too long , It's easy to waste time , If the waiting time is too short, it may result in web You haven't loaded the required location yet element, And an error is reported .
Because the waiting time cannot be determined , Use too much sleep Will affect the running speed , Greatly reduce efficiency , Therefore, it is recommended to use less forced waiting in the test .
2、 An implicit wait ( implicitly_wait)
# An implicit wait 10s driver.implicitly_wait(10)
brief introduction : Implicit waiting is global and targeted at all elements , Set the waiting time such as 10 second , If 10 Seconds to appear , Then continue down , Otherwise, throw it out of order . It can be understood that 10 Within seconds , Keep refreshing to see if the element is loaded .
Use scenarios : Implicit wait only needs to be declared once , It is usually declared after opening the browser . After the statement to the whole drvier The life cycle of , There is no need to repeat the statement . There is a problem with implicit waiting , That is, the program will wait for the whole page to load , In other words, generally you see that the small circle in the browser tab bar doesn't rotate any more , To take the next step , But sometimes the elements the page wants are already loaded , But because of the individual js Things like that are very slow , You still have to wait until the page is complete before you go to the next step .
3、 According to wait ( expected_conditions)
brief introduction : Show that waiting is for an element alone , Set a waiting time such as 5 second , every other 0.5 Check whether it appears every second , If in 5 Seconds before any time , Then continue down , Generally, it is necessary to cooperate with this kind of until() and until_not() Methods used together , Until the set maximum time is exceeded , Then throw a timeout error TimeoutException, Here are some of the most common methods :
1. Judge element Whether or not visible :visibility_of_element_located(locator) ( Visible represents element Non hidden , also element Neither width nor height is equal to 0)
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.by import By
# Example
target = EC.visibility_of_element_located(By.ID,'user')
# coordination until() Use ( Wait for the element to be visible )
# 5 Express Maximum timeout , Default in seconds ; 1 Indicates the interval step of detection , While waiting , Every once in a while ( Default 0.5 second ), call until or until_not The method in , Until it comes back True or False.
WebDriverWait(driver, 5, 1).until(EC.visibility_of_element_located(By.ID,'user'))
# coordination until_not() Use ( Wait for the element to be invisible )
WebDriverWait(driver, 5, 1).until_not(EC.visibility_of_element_located(By.ID,'user'))
# Encapsulated as a function in a class
def wait_eleLocated(self, loc, timeout=30, poll_frequency=0.5, model=None):
"""
:param loc: Element location expression ; A tuple type , The way of expression ( Element location type , Element positioning method ), Example :(By.ID, "kw")
:param timeout: Timeout time
:param poll_frequency: Polling frequency
:param model: Wait for failure , Screenshot operation , The function annotation to be expressed in the picture file
:return:None
"""
self.logger.info(f' wait for "{model}" Elements , Positioning mode :{loc}')
try:
start = datetime.now()
WebDriverWait(self.driver, timeout, poll_frequency).until(EC.visibility_of_element_located(loc))
end = datetime.now()
self.logger.info(f' wait for "{model}" Duration :{end - start}')
except TimeoutException:
self.logger.exception(f' wait for "{model}" Element failed , Positioning mode :{loc}')
# Screenshot
self.save_webImgs(f" Waiting elements [{model}] Something unusual happened ")
raise2. Judge a certain element Whether it is loaded into dom Trees :presence_of_element_located(locator) ( It doesn't mean that element It must be visible )
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By target = EC.presence_of_element_located(By.ID,'user')
3. Judge a certain element Is visible and clickable in :element_to_be_clickable(locator)
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By target = EC.element_to_be_clickable(By.ID,'user')
4. Judge a certain element Is it selected :element_to_be_selected(element) ( Usually used in drop-down list )
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
element = driver.find_element_by_class_name('selector')
EC.element_to_be_selected(element)Thank you for reading ! About “Selenium What are the ways of waiting ” This article is shared here , I hope the above contents can be of some help to you , So that everyone can learn more , If you think the article is good , You can share it and let more people see it !
边栏推荐
- JVM指令助记符
- Talk about the secret of high performance of message queue -- zero copy technology
- 微服务实战|声明式服务调用OpenFeign实践
- Chrome browser tag management plug-in – onetab
- Taking the upgrade of ByteDance internal data catalog architecture as an example, talk about the performance optimization of business system
- [staff] common symbols of staff (Hualian clef | treble clef | bass clef | rest | bar line)
- Actual combat of microservices | discovery and invocation of original ecosystem implementation services
- 【Go实战基础】gin 如何自定义和使用一个中间件
- Statistical learning methods - Chapter 5, decision tree model and learning (Part 1)
- 2022/2/13 summary
猜你喜欢

微服务实战|微服务网关Zuul入门与实战

Machine learning practice: is Mermaid a love movie or an action movie? KNN announces the answer

Sentinel reports failed to fetch metric connection timeout and connection rejection

Servlet全解:继承关系、生命周期、容器和请求转发与重定向等

Redis 序列化 GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer的区别

Shengshihaotong and Guoao (Shenzhen) new energy Co., Ltd. build the charging pile industry chain

《统计学习方法》——第五章、决策树模型与学习(上)

Difference between redis serialization genericjackson2jsonredisserializer and jackson2jsonredisserializer

WSL installation, beautification, network agent and remote development

Jd.com interviewer asked: what is the difference between using on or where in the left join association table and conditions
随机推荐
JVM instruction mnemonic
In depth analysis of how the JVM executes Hello World
西瓜书--第六章.支持向量机(SVM)
I've taken it. MySQL table 500W rows, but someone doesn't partition it?
Microservice practice | teach you to develop load balancing components hand in hand
Complete solution of servlet: inheritance relationship, life cycle, container, request forwarding and redirection, etc
2022/2/14 summary
Micro service practice | introduction and practice of zuul, a micro service gateway
Cloudrev self built cloud disk practice, I said that no one can limit my capacity and speed
Break the cocoon | one article explains what is the real cloud primordial
Knife4j 2. Solution to the problem of file control without selection when uploading x version files
Actual combat of microservices | discovery and invocation of original ecosystem implementation services
Matplotlib剑客行——布局指南与多图实现(更新)
Amq6126 problem solving ideas
【Go实战基础】gin 如何绑定与使用 url 参数
查看was发布的应用程序的端口
Matplotlib剑客行——容纳百川的艺术家教程
微服务实战|微服务网关Zuul入门与实战
京东面试官问:LEFT JOIN关联表中用ON还是WHERE跟条件有什么区别
Matplotlib swordsman Tour - an artist tutorial to accommodate all rivers