Selenium入门20 等待时间
2024-08-29 05:54:35
自动化过程中有的页面元素加载慢或者需要等待特定条件执行后续步骤,此时需添加等待时间:
1 time.sleep() 固定等待时间,需import time
2 webdriver隐式等待 无需引入包
driver.implicitly_wait(10) 最多等待10s,10s内监测到元素则继续执行,超过10s抛出超时异常。driver生命周期内都有效
3 webdriver显示等待,需引包from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait(driver, 10).until()或until_not() 10s内每500ms监测一次条件是否成立,超过10s超时
下面尝试未设置时间,设置固定时间,设置隐式等待和显示等待四种方式:
1 未设置等待时间,抛出异常未找到元素
#coding:utf-8
#等待时间
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import
dr = webdriver.Firefox()
dr.get("https://www.baidu.com")
dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
#未等待
dr.find_element_by_partial_link_text("Web Browser Automation").click()
dr.quit()
2 设置固定等待时间2s
#coding:utf-8
#等待时间
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
dr = webdriver.Firefox()
dr.get("https://www.baidu.com")
dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
#固定等待时间
time.sleep(2)
dr.find_element_by_partial_link_text("Web Browser Automation").click()
dr.quit()
3 隐式等待
#coding:utf-8
#等待时间
from selenium import webdriver
from selenium.webdriver.common.keys import Keys dr = webdriver.Firefox()
dr.implicitly_wait(10) #设置页面元素的隐式等待时间10s
dr.get("https://www.baidu.com")
dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
dr.find_element_by_partial_link_text("Web Browser Automation").click()
dr.quit()
4 显示等待
#coding:utf-8
#等待时间
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
dr = webdriver.Firefox()
dr.get("https://www.baidu.com")
dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER)
#显示等待
element = WebDriverWait(dr,10).until(
EC.presence_of_element_located((By.PARTIAL_LINK_TEXT,'Web Browser Automation'))
)
element.click()
dr.quit()
webdriver提供了很多预期条件:
the end!
最新文章
- Linux中设定umask的作用
- Bash的自动补全
- stdafx.h的作用
- Linux的sleep()和usleep()的使用和区别
- android开发实现静默安装(fota升级)
- LCIS tyvj1071 DP优化
- 话说 MAX_FILE_SIZE
- C#多线程编程(7)--锁
- Git diff 统计代码更改数量
- ef mysql
- [物理学与PDEs]第1章习题2 均匀带电球面的电场强度与电势
- note 12 集合Set
- pycharm sql语句警告
- cocos2dx spine之一 :spine缓存 (c++ &; lua)
- Python中的实例方法、类方法、静态方法和普通方法
- springboot-32-使用mvc测试
- 【webserver】使用python实现webserver,支持上传下载文件
- 使用node.js的开发框架express创建一个web应用
- Code Signal_练习题_digitDegree
- RSS介绍、RSS 2.0规范说明和示例代码