Selenium成长之路-15设置等待时间

简介: Selenium成长之路-15设置等待时间

为了保证运行的脚本正常加载,我们需要的是设置等待时间,具体有以下几种:


sleep():设置固定等待时间,主要由time包提供,也可叫强制等待,


也就是说不管页面是否加载完成,都会等待这些时间。


代码如下:


# coding = utf-8
from selenium import  webdriver
import time
from selenium.webdriver.common.by import By
# from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
url = 'http://www.baidu.com'
driver.get(url)
#在百度输入框输入python
browser = driver.find_element(By.ID,'kw')
browser.send_keys("pythonn")
time.sleep(5)
driver.quit()


implicitly_wait():webdriver包提供的一个等待方法,也叫隐式等待,


隐式等待是设置了一个最长等待时间,如果规定时间内网页加载完成,则进行下一步,否则一直等到时间截止,再进行下一步。


代码如下:


# coding = utf-8
from selenium import  webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
url = 'http://www.baidu.com'
driver.get(url)
#在百度输入框输入python
browser = driver.find_element(By.ID,'kw')
inp=browser.send_keys("pythonn")
driver.implicitly_wait(3)
#删除一个n
browser.send_keys(Keys.BACK_SPACE)
driver.implicitly_wait(3)
#回车键
browser.send_keys(Keys.ENTER)
driver.implicitly_wait(10)
driver.quit()


WebDriverWait():同样也是 webdirver 提供的方法,也叫显示等待,


语法结构如下:


WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)


driver:webdriver.Chrome()   主要就是指webdriver的驱动程序


timeout:超时时间,默认单位是秒


poll_frequency:休眠时间的间隔时间,默认0.5秒


ignored_exceptions:超时后的异常信息,默认抛出NoSuchElementException异常


配合该类的until()和until_not()方法使用,详细如下:


until(method,message=''):调用该方法提供的驱动程序作为一个参数,直到返回值不为False


unitl_not(method,message=''):调用该方法提供的驱动程序作为一个参数,直到返回值为False


主要是:程序每个xx秒查看一次,如果条件成立,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException


代码如下:


# coding = utf-8
from selenium import  webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Chrome()
url = 'http://www.baidu.com'
driver.get(url)
browser = driver.find_element(By.ID,'kw')
#设置现实等待,NoSuchElementException 可以不写
# WebDriverWait(driver,10,1).until(lambda  driver:browser)
try:
    WebDriverWait(driver,10,2,NoSuchElementException).until(lambda driver:browser)
    print("test pass")
except Exception as e:
    print("test file ",format(e))
driver.quit()


这里应用了一个新函数:lambda 表达式,也叫匿名函数,宗旨就是能一句话写完的代码不需要写两句话,把def函数简单化


不懂得可以看一下廖大大的Python教程:点击这里


一般在实际项目中,隐式等待使用的频率会更高一些,但是并不是说现实等待或者强制等待不会去使用。


所以具体怎么去使用以及使用什么方法,只要能保证脚本正常运行不出错,就是可行的。

目录
相关文章
|
26天前
|
数据采集 安全 Java
Java Selenium WebDriver:代理设置与图像捕获
Java Selenium WebDriver:代理设置与图像捕获
|
3月前
|
API Python
python+selenium设置下载路径
python+selenium设置下载路径
101 0
|
3月前
|
API Python
python+selenium设置下载路径21 / 100
python+selenium设置下载路径21 / 100
84 0
|
3月前
设置selenium默认下载位置
设置selenium默认下载位置
226 1
selenium--设置浏览器的位置和高度宽度
selenium--设置浏览器的位置和高度宽度
|
缓存 JavaScript 测试技术
曲鸟全栈UI自动化教学(九):Selenium为什么慢?那是你加载策略设置不对
曲鸟全栈UI自动化教学(九):Selenium为什么慢?那是你加载策略设置不对
341 0
曲鸟全栈UI自动化教学(九):Selenium为什么慢?那是你加载策略设置不对
|
测试技术
【selenium】设置元素等待
简介:【selenium】设置元素等待
【selenium】设置元素等待
|
数据采集 Python
scrapy对接selenium并设置selenium不加载图片
在 middlewares.py 文件中添加: from selenium import webdriver import time from scrapy.
1667 0

热门文章

最新文章