selenium--等待的三种方式

简介: selenium--等待的三种方式

前戏


在我们做UI自动化的时候,最不稳定的就是页面了,由于各种原因页面的元素没有加载出来,比如网速慢,服务器响应慢等等,这时候如果我们去操作页面的元素,selenium会给我们抛出一个NoSuchElementException的异常。我们可以等待页面页面加载出来或者一段时间再去操作,这样的话大大降低了这种错误的出现。

我们可以用python内置的sleep来强制等待,或者用selenium提供的显示等待或者隐式等待的方法


相关模块:

WebDriverWait 显示等待针对元素必用

expected_conditions 预期条件类(用于显示等待)

NoSuchElementException 用于隐式等待抛出异常

 

sleep


sleep强制等待,不管元素有没有加载出来,都必须等到时间才会往下去执行

from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
sleep(2)
driver.find_element_by_css_selector('#kw').send_keys('python')
sleep(2)
driver.quit()

 

隐式等待


隐式等待不针对某一个元素进行等待,全局元素等待,隐式等待会等待整个页面加载完成,也就是说浏览器窗口标签栏中不在出现转动的小圆圈,才会执行下一步

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from time import sleep, ctime
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
sleep(2)
# 设置隐式等待,最多等待 5s,如果五秒内什么时候加载完就什么时候进行操作
driver.implicitly_wait(5)
try:
    print(ctime())
    driver.find_element_by_css_selector('#kw').send_keys('python')
    driver.find_element_by_css_selector('#su').click()
except NoSuchElementException  as msg:
    print(msg)
finally:
    print(ctime())
sleep(2)
driver.quit()

 

显示等待


显示等待是针对某一个元素进行相关等待判定

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
sleep(2)
driver.find_element_by_css_selector('#kw').send_keys('python')
# 一共等待 5 秒钟,每 0.5s 找一次,直到通过 ID 找到
element = WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.ID, 'su')))
element.click()
sleep(2)
driver.quit()

 

不是总结的总结


学了等待的三种方法,我最常用的还是显示等待,写一个公共的方法,把通过什么定位和定位元素抽离出来,什么时候用,传这两个参数就可以了


相关文章
|
JavaScript
Selenium最全超时等待问题的处理方案
Selenium广泛应用于自动化测试和自动化业务开发,同时在网络爬虫中也有较多的应用,使用Selenium有两个核心的问题:第一个是如何在爬虫领域不被识别出来,另一个是在自动化领域如何解决超时加载的问题。
3427 0
|
10月前
|
Python
Python:Selenium中三种等待方法说明
Python:Selenium中三种等待方法说明
60 0
|
11月前
|
测试技术
Selenium 操作表单元素、行为链、操作Cookie和页面等待
Selenium 操作表单元素、行为链、操作Cookie和页面等待
|
11月前
selenium 三种等待方式
selenium 三种等待方式
|
测试技术
软件测试|selenium三种等待方式
软件测试|selenium三种等待方式
62 0
|
数据采集 JavaScript Java
selenium,最正确的网页等待方式
selenium,最正确的网页等待方式
|
测试技术
【selenium】设置元素等待
简介:【selenium】设置元素等待
【selenium】设置元素等待
|
JavaScript 前端开发
Selenium系列(六) - 详细解读强制等待、隐式等待、显式等待的区别和源码解读
Selenium系列(六) - 详细解读强制等待、隐式等待、显式等待的区别和源码解读
301 0
|
数据采集 Python
Python网络爬虫Selenium页面等待:强制等待、隐式等待和显式等待
Python网络爬虫Selenium页面等待:强制等待、隐式等待和显式等待
304 0

热门文章

最新文章