1.sleep 休眠方法

  • sleep()由python的time模块提供。
  • 当执行到sleep()方法时,脚本会定时休眠所设置的时长,sleep()方法默认参数是s(秒),sleep(2) 表示休眠2s;如果设置时长小于1秒,那就直接写sleep(0.5) 。

# coding:utf-8 # 导入time包
from time import sleep
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.baidu.com") sleep(2)
driver.find_element_by_id("kw").send_keys("selenium") sleep(1.5)
driver.find_element_by_id("su").click()

2.隐式等待 implicitly_wait()

  • 隐式等待是通过一定的时长等页面元素全部加载完成(就是等待页面左上角转圈结束)。如果超出了设置的时长,元素还没有加载出来,那么就会抛出异常 NoSuchElementException

  • 隐式等待是全局的,只写一次就行了。

  • 弊端:有些网站页面写得不好,js报错,一直在转圈,那么就会消耗时间,影响效率。

  • 页面跳转的时候,不知道去等第二个页面

  • Implicitly_wait(10)默认参数的单位是秒,这里10秒并不是固定的等待时间,当脚本定位不到这个元素时,

    它将以轮询的方式不断地判断元素是否是否被定位到,如果超过了10秒还是定位不到元素,那么就会抛出异常。


# coding:utf-8 from selenium import webdriver driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("https://www.baidu.com") driver.find_element_by_id("kw1").send_keys("python")
  • 元素定位不到,抛出异常:

    selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"id","selector":"kw1"}

3.显式等待 WebDriverWait()

  • 首先打开源码看一下,源码的位置

  • 看一下源码中,WebDriverWait每个参数的意思

  • driver :webdriver的实例
  • timeout :超时的总时长
  • poll_frequency :循环查询的间隔时间,默认为0.5s
  • ignored_exceptions :忽略异常,默认忽略 NoSuchElementException
# coding:utf-8

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Firefox()
driver.implicitly_wait(10)
driver.get("https://www.baidu.com") element = WebDriverWait(driver, 15).until(lambda x: x.find_element_by_id("kw"))
print(element)
  • 有个不好的地方就是,找不到元素只会报一个异常 TimeoutException,

    所以调试的时候还是要先用常规的方法,先定位好,然后再封装成显式等待的方法

最新文章

  1. linux下用c实现ls命令
  2. QMap
  3. CSS与JQuery的相关问题
  4. ASP.NET MVC ActionFilterAttribute的执行顺序
  5. PHP 查询时区与设置时区
  6. RelativeLayout用到的一些重要的属性:
  7. Objective-C:Block
  8. 互联网保险O2O平台微服务架构设计(转)
  9. 信号之sigaction函数
  10. C#中的强类型说明
  11. 10.23 noip模拟试题
  12. JavaScript HTML DOM - 改变 HTML
  13. hdu1405 第六周J题(质因数分解)
  14. 【php-fpm】启动PHP报错ERROR: [pool www] cannot get uid for user 'apache'
  15. 洛谷P2634 聪明可可
  16. 基于Thinkphp5.0 小程序登录插件应用
  17. css高级选择器&盒模型
  18. 04 复制删除行为IDA反汇编
  19. powerDesigner 把name项添加到注释(comment)
  20. L2-003. 月饼(贪心)

热门文章

  1. LeetCode——Word Break
  2. maven中pom.xml标签介绍
  3. js异步获取数据的问题
  4. xml的servlet配置
  5. 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载
  6. yii定时任务(linux)
  7. nginx 相关资料
  8. [转载]Java动态填充word文档并上传到服务器
  9. Spring 自动装配;方法注入
  10. Vue: webpack js basic structure