当前位置:网站首页>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 !
边栏推荐
- [go practical basis] how to bind and use URL parameters in gin
- Demand delineation executive summary
- [staff] the lines and spaces of the staff (the nth line and the nth space in the staff | the plus N line and the plus N space on the staff | the plus N line and the plus N space below the staff | the
- oracle删除表空间及用户
- Shengshihaotong and Guoao (Shenzhen) new energy Co., Ltd. build the charging pile industry chain
- Matplotlib剑客行——容纳百川的艺术家教程
- CSDN Q & A_ Evaluation
- Cartoon rendering - average normal stroke
- Insight into cloud native | microservices and microservice architecture
- Troubleshooting and handling of an online problem caused by redis zadd
猜你喜欢

Probability is not yet. Look at statistical learning methods -- Chapter 4, naive Bayesian method

【Go实战基础】gin 如何绑定与使用 url 参数

From concept to method, the statistical learning method -- Chapter 3, k-nearest neighbor method

Chrome browser plug-in fatkun installation and introduction
![[go practical basis] how to install and use gin](/img/0d/3e899bf69abf4e8cb7e6a0afa075a9.png)
[go practical basis] how to install and use gin

微服务实战|熔断器Hystrix初体验

Mysql 多列IN操作

Matplotlib剑客行——没有工具用代码也能画图的造型师

Elastic Stack之Beats(Filebeat、Metricbeat)、Kibana、Logstash教程

Difference between redis serialization genericjackson2jsonredisserializer and jackson2jsonredisserializer
随机推荐
Break the cocoon | one article explains what is the real cloud primordial
hystrix 实现请求合并
What is the future value of fluorite mine of karaqin Xinbao Mining Co., Ltd. under zhongang mining?
Talk about the secret of high performance of message queue -- zero copy technology
机器学习实战:《美人鱼》属于爱情片还是动作片?KNN揭晓答案
The channel cannot be viewed when the queue manager is running
Complete solution of servlet: inheritance relationship, life cycle, container, request forwarding and redirection, etc
CSDN Q & A_ Evaluation
[go practical basis] how can gin get the request parameters of get and post
During MySQL installation, mysqld Exe reports that the application cannot start normally (0xc000007b)`
微服务实战|手把手教你开发负载均衡组件
Oracle delete tablespace and user
数构(C语言)——第四章、矩阵的压缩存储(下)
Cartoon rendering - average normal stroke
京东高级工程师开发十年,编写出:“亿级流量网站架构核心技术”
[go practical basis] how to customize and use a middleware in gin
Matplotlib swordsman - a stylist who can draw without tools and code
A detailed explanation takes you to reproduce the statistical learning method again -- Chapter 2, perceptron model
"Interview high frequency question" is 1.5/5 difficult, and the classic "prefix and + dichotomy" application question
知识点很细(代码有注释)数构(C语言)——第三章、栈和队列