当前位置:网站首页>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 ") raise
2. 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 !
边栏推荐
- 「Redis源码系列」关于源码阅读的学习与思考
- Knife4j 2. Solution to the problem of file control without selection when uploading x version files
- Matplotlib剑客行——初相识Matplotlib
- 西瓜书--第五章.神经网络
- Mathematics in machine learning -- point estimation (I): basic knowledge
- WSL installation, beautification, network agent and remote development
- JVM instruction mnemonic
- 分布式锁的这三种实现方式,如何在效率和正确性之间选择?
- 【Go实战基础】如何安装和使用 gin
- Statistical learning methods - Chapter 5, decision tree model and learning (Part 1)
猜你喜欢
Microservice practice | fuse hytrix initial experience
「Redis源码系列」关于源码阅读的学习与思考
西瓜书--第六章.支持向量机(SVM)
[go practical basis] how to install and use gin
查看was发布的应用程序的端口
Matplotlib剑客行——容纳百川的艺术家教程
微服务实战|微服务网关Zuul入门与实战
Redis zadd导致的一次线上问题排查和处理
I've taken it. MySQL table 500W rows, but someone doesn't partition it?
自定义Redis连接池
随机推荐
【Go实战基础】gin 如何绑定与使用 url 参数
以字节跳动内部 Data Catalog 架构升级为例聊业务系统的性能优化
Timed thread pool implements request merging
自定義Redis連接池
Amq6126 problem solving ideas
Knife4j 2.X版本文件上传无选择文件控件问题解决
Don't spend money, spend an hour to build your own blog website
Elastic Stack之Beats(Filebeat、Metricbeat)、Kibana、Logstash教程
企业级SaaS CRM实现
Enterprise level SaaS CRM implementation
Number structure (C language) -- Chapter 4, compressed storage of matrices (Part 2)
Redis 序列化 GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer的区别
Flink - use the streaming batch API to count the number of words
WSL installation, beautification, network agent and remote development
微服务实战|负载均衡组件及源码分析
一篇详解带你再次重现《统计学习方法》——第二章、感知机模型
微服务实战|熔断器Hystrix初体验
[staff] time sign and note duration (full note | half note | quarter note | eighth note | sixteenth note | thirty second note)
JVM指令助记符
Chrome浏览器插件-Fatkun安装和介绍