Python selenium 延时的几种方法
解决网页加载缓慢的几种方法:
一、显性等待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 延时的几种方法相关推荐
- Python调用JS的四种方法
Python调用JS的四种方法 1.PyExecJS 方法 1).安装PyExecJS 2). `PyExecJS 示例` 2.PyV8 方法 1).安装PyV8 2). `PyV8 示例` 3.js ...
- 用python下载文件的若干种方法汇总
压缩文件可以直接放到下载器里面下载的 you-get 连接 下载任意文件 重点 用python下载文件的若干种方法汇总 写文章 用python下载文件的若干种方法汇总 zhangqibot发表于Met ...
- 基础必备 | Python处理文件系统的10种方法
作者 | Jeff Hale 译者 | 风车云马:责编 | Jane,Rachel 出品 | Python大本营(ID:pythonnews) [导读]在编写一些Python程序的时候,我们常常需要与 ...
- 测试Python下载图片的三种方法
简 介: 通过Python软件包对网络URL图片链接进行下载,可以加快后期处理.本文测试了urllib, request两个软件包对图片进行下载效果.如果图片原网页有了防止下载机制,是无法下载图片. ...
- python使用方法视频-Python读取视频的两种方法(imageio和cv2)
用python读取视频有两种主要方法,大家可依据自己的需求进行使用. 方法一: 使用imageio库,没有安装的可用pip安装或自己下载,安装好后重启终端即可调用. import pylab impo ...
- 怎么在python下载网站内容-Python下载网页的几种方法
get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...
- python学习音频-详解python播放音频的三种方法
第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...
- python可以播放音乐吗_详解python播放音频的三种方法
第一种 使用pygame模块 pygame.mixer.init() pygame.mixer.music.load(self.wav_file) pygame.mixer.music.set_vol ...
- python调用cmd命令释放端口_详解python调用cmd命令三种方法
目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...
最新文章
- 2021年大数据常用语言Scala(二十八):scala面向对象 MAVEN依赖和类
- 2. Nest:Controller
- SSM整合项目中使用百度Ueditor遇到的问题。
- 雅虎失败原因:没有跟上互联网变化节奏
- 【带着canvas去流浪(11)】Three.js入门学习笔记
- 博客园的“随笔、文章、新闻、日记”有啥区别
- 使用Pls_Integer的好处
- 安川mpe720编程手册_南宁安川机器人学校
- python广州地图_广东省客户数量地图展示,如何通过python实现?
- 群晖7.0搭建discuz论坛
- 1,标准差的计算 2,标准分数z-score
- Linux Ubuntu输入法安装设置及中文字体安装
- 【JAVA笔记】JAVA调用同一个包里的不同类的方法:
- UML图学习之五 序列图(顺序图)和协作图
- vscode设置不显示某些文件或文件夹
- 读书分享:《数学之美》中的一些关键名词
- 团建游戏----啦啦队
- Revi开发 - 碰撞检测
- 【MySQL】启动、数据库/数据表 创建/查看/删除
- Chrome BookMark_back(2011-2-25)
热门文章
- java快速排列马桶,马桶Java :6.高性能MySQL语句(二)
- java+yeild+sleep_java之yield(),sleep(),wait()区别详解-备忘笔记[转]
- springBoot项目首页居然还有这么多种玩儿法,index.html并不是必须的
- svg html5 ajax,jQuery附加到AJAX加载的SVG问题
- java 重定向关键字_springboot实现转发和重定向
- springMVC前后端各种类型数据绑定
- gFTP不能显示中文文件(夹)名的解决方法
- 调用存储过程时报错:Illegal mix of collations
- init.x java_详谈jvm--Java中init和clinit的区别
- java同一程序只运行一次_如何使自己的程序只运行一次