解决网页加载缓慢的几种方法:

一、显性等待WebDriverWait,配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待

1 from selenium import webdriver
2 from selenium.webdriver.support.wait import WebDriverWait
3
4 driver = webdriver.Firefox()
5 driver.get("https://www.baidu.com/")
6 # 等待时长30秒,默认每0.5秒询问一次
7 WebDriverWait(driver, 30).until(lambda x: x.find_element_by_id("kw")).send_keys("sky")
8 # sel_count_info = WebDriverWait(driver, 30).until(lambda x: x.find_element_by_id("selCount")).text

Wait Until

WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息)

WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until_not(可执行方法, 超时时返回的信息)

可以用selenium提供的 expected_conditions 模块中的各种条件,也可以用WebElement的 is_displayed() 、is_enabled()、is_selected() 方法,或者用自己封装的方法都可以

二、强制等待 sleep(xx),不建议总用这种等待方式,太死板,严重影响程序执行速度

1 from selenium import webdriver
2 from selenium.webdriver.support.wait import WebDriverWait
3
4 driver = webdriver.Firefox()
5 driver.get("https://www.baidu.com/")
6 # 强制等待时长5秒
7 driver.find_element_by_id("kw").send_keys("sky")

Sleep

三、隐性等待implicitly_wait(xx),隐性等待对整个driver的周期都起作用,所以只要设置一次即可

1 from selenium import webdriver
2
3 driver = webdriver.Firefox()
4 # 隐性等待,最长等30秒
5 driver.implicitly_wait(30)
6 driver.get('https://huilansame.github.io') 

implicitly_wait

四、隐性显性并用

 1 from selenium import webdriver
 2 from selenium.webdriver.support.wait import WebDriverWait
 3 from selenium.webdriver.support import expected_conditions as EC
 4 from selenium.webdriver.common.by import By
 5 driver = webdriver.Firefox()
 6 driver.implicitly_wait(10) # 隐性等待和显性等待可以同时用,但要注意:等待的最长时间取两者之中的大者
 7 driver.get('https://huilansame.github.io')
 8 locator = (By.LINK_TEXT, 'CSDN')
 9 try:
10     WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))
11     print(driver.find_element_by_link_text('CSDN').get_attribute('href'))
12 finally:
13     driver.close()  

隐性显性同时使用

转载于:https://www.cnblogs.com/skyliao/p/9072782.html

Python selenium 延时的几种方法相关推荐

  1. Python调用JS的四种方法

    Python调用JS的四种方法 1.PyExecJS 方法 1).安装PyExecJS 2). `PyExecJS 示例` 2.PyV8 方法 1).安装PyV8 2). `PyV8 示例` 3.js ...

  2. 用python下载文件的若干种方法汇总

    压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...

  3. 基础必备 | Python处理文件系统的10种方法

    作者 | Jeff Hale 译者 | 风车云马:责编 | Jane,Rachel 出品 | Python大本营(ID:pythonnews) [导读]在编写一些Python程序的时候,我们常常需要与 ...

  4. 测试Python下载图片的三种方法

    简 介: 通过Python软件包对网络URL图片链接进行下载,可以加快后期处理.本文测试了urllib, request两个软件包对图片进行下载效果.如果图片原网页有了防止下载机制,是无法下载图片. ...

  5. python使用方法视频-Python读取视频的两种方法(imageio和cv2)

    用python读取视频有两种主要方法,大家可依据自己的需求进行使用. 方法一: 使用imageio库,没有安装的可用pip安装或自己下载,安装好后重启终端即可调用. import pylab impo ...

  6. 怎么在python下载网站内容-Python下载网页的几种方法

    get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...

  7. python学习音频-详解python播放音频的三种方法

    第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...

  8. python可以播放音乐吗_详解python播放音频的三种方法

    第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...

  9. python调用cmd命令释放端口_详解python调用cmd命令三种方法

    目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...

最新文章

  1. 2021年大数据常用语言Scala(二十八):scala面向对象 MAVEN依赖和类
  2. 2. Nest:Controller
  3. SSM整合项目中使用百度Ueditor遇到的问题。
  4. 雅虎失败原因:没有跟上互联网变化节奏
  5. 【带着canvas去流浪(11)】Three.js入门学习笔记
  6. 博客园的“随笔、文章、新闻、日记”有啥区别
  7. 使用Pls_Integer的好处
  8. 安川mpe720编程手册_南宁安川机器人学校
  9. python广州地图_广东省客户数量地图展示,如何通过python实现?
  10. 群晖7.0搭建discuz论坛
  11. 1,标准差的计算 2,标准分数z-score
  12. Linux Ubuntu输入法安装设置及中文字体安装
  13. 【JAVA笔记】JAVA调用同一个包里的不同类的方法:
  14. UML图学习之五 序列图(顺序图)和协作图
  15. vscode设置不显示某些文件或文件夹
  16. 读书分享:《数学之美》中的一些关键名词
  17. 团建游戏----啦啦队
  18. Revi开发 - 碰撞检测
  19. 【MySQL】启动、数据库/数据表 创建/查看/删除
  20. Chrome BookMark_back(2011-2-25)

热门文章

  1. java快速排列马桶,马桶Java :6.高性能MySQL语句(二)
  2. java+yeild+sleep_java之yield(),sleep(),wait()区别详解-备忘笔记[转]
  3. springBoot项目首页居然还有这么多种玩儿法,index.html并不是必须的
  4. svg html5 ajax,jQuery附加到AJAX加载的SVG问题
  5. java 重定向关键字_springboot实现转发和重定向
  6. springMVC前后端各种类型数据绑定
  7. gFTP不能显示中文文件(夹)名的解决方法
  8. 调用存储过程时报错:Illegal mix of collations
  9. init.x java_详谈jvm--Java中init和clinit的区别
  10. java同一程序只运行一次_如何使自己的程序只运行一次