强制等待 sleep() -- 最不建议用

缺点:sleep(10)
网络不好的情况,到10秒就抛出异常
网络很好,1秒钟就响应了,白白等待多9秒

隐式等待 -- 也不是很理想的方法
implicitly_wait(秒)
设置最长等待时间,在这个时间内加载完成,则执行下一步
整个driver的会话周期内,设置一次即可,全局都可用

显性等待 -- selenium提供的
明确等到某个条件满足了,才进行下一步操作

2个类
WebDriverWait 显性等待类
WebDriverWait(driver, 等待时长,轮询周期).until/until_not

希望条件类
expected_conditions类,提供一系列期望发生的条件

判断什么时候满足条件
presence_of_element_located:元素存在
visibility_of_element_located:元素可见
element_to_be_clickable:元素可点击

实例

# -*- coding:utf-8 -*-

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By # 打开浏览器
options = webdriver.ChromeOptions()
options.add_argument('disable-infobars') # 多加几行是为了去掉提示:Chrome正收到自动测试软件的控制
driver = webdriver.Chrome(chrome_options=options)
driver.get('http://www.baidu.com')
driver.maximize_window() # 最大化浏览器窗口
login_a_locator = '#u1 > a.lb'
# 等待响应
print(u'等待响应...')
WebDriverWait(driver,50,1).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, login_a_locator)))
print(u'元素加载完成并点击该元素...')
driver.find_element_by_css_selector(login_a_locator).click()
# driver.close()
print(u'结束')

最新文章

  1. final 评论ii
  2. CentOS 6.3 中安装VirtualBOX增强工具失败:Building the main Guest Additions module[FAILED]
  3. 70 sudo-用来以其他身份来执行命令
  4. UIActionSheet的使用
  5. 生成月初月末便于拼接sql
  6. SVN Server配置详解 及备份
  7. Web Service学习之七:CXF拦截器
  8. 如果利用storyboard创建cell中标识符identifier的正确设置
  9. [PR & ML 3] [Introduction] Probability Theory
  10. PAT_1046 划拳
  11. Android艺术开发探索第四章——View的工作原理(上)
  12. MongoDB 用MongoTemplate查询指定时间范围的数据
  13. Luogu_1944 最长括号匹配
  14. 蓝桥杯近三年决赛题之一(15年B组)
  15. 【微服务No.4】 API网关组件Ocelot+Consul
  16. Java关键字(六)——super
  17. 再谈git和github-深入理解
  18. MFC 不同窗体之间变量调用
  19. AD采集问题
  20. Redis学习笔记之单机实现

热门文章

  1. 【leetcode】1160. Find Words That Can Be Formed by Characters
  2. android 常用框架总结(转载)
  3. EOF和~
  4. luogu P1428 小鱼比可爱 x
  5. [USACO17JAN]Promotion Counting 题解
  6. opencv入门教程三
  7. Spring Cloud架构教程 (七)消息驱动的微服务(核心概念)【Dalston版】
  8. Spring Boot 中使用 spring-boot-devtools (使用 Gradle 作为构建工具)
  9. git 指定从其他分支拉取commit
  10. 【后台管理系统】—— Ant Design Pro组件使用(二)