从网上load的:

网页常常会因为网络原因,程序问题等等导致打开网页慢,一直在那里打圈圈。

出现这种情况时网页里的很多元素就没有加载完成,如果你刚好要定位的元素没有加载完,这时定位的话程序就会抛出异常。

所以程序里要加入等待机制,等待元素加载完,要让程序稳定运行,加等待(waits)这挺重要的,因为网络真的没有那么好。

等待页面加载有三种方法。

1.time.sleep()方法

这是直接调用time里的sleep来强制等待,我前面几篇文章写的例子就是用的sleep。

这不是selenium的官方写法,官方认为使用sleep是比较糟糕的用法,官方写法是下面两种方法。之前是这样写是想简化一下。

2.WebDriverWait()显示等待

就是设置一个等待时间,直到这个元素出现就停止等待,如果没出现就抛出异常。

比如设置10秒等待时间,如果等待第6秒这个元素就出现了,就停止等待,继续往下执行,如果第10秒元素还没出现,就抛出异常。

代码如下,使用的WebDriverWait().until()方法,WebDriverWait()里填driver和要等待的时间,until里填等待的元素。代码演示的是点击猿人学右上角的搜索按钮,等待class_name叫search-show的出现为止。

#coding=utf-8

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC

import time

driver = webdriver.Chrome(executable_path="C:/chromedriver.exe")

driver.get('https://www.yuanrenxue.com')

try:

element = WebDriverWait(driver, 10).until(

EC.presence_of_element_located((By.CLASS_NAME, "search-show"))

)

element.click()

finally:

time.sleep(10)

driver.quit()

3.implicitly_wait()隐式等待

隐式等待是一个全局设置,设置后所有的元素定位都会等待给定的时间,直到元素出现为止,等待规定时间元素没出现就报错。

因为设定后是所有定位都要等待,所以最好用显示等待。

隐式等待的调用方法是:

#coding=utf-8

from selenium import webdriver

driver = webdriver.Chrome(executable_path="C:/chromedriver.exe")

#等待5秒

driver.implicitly_wait(5)

driver.get('https://www.yuanrenxue.com')

driver.find_element_by_class_name('slide-left').click()

driver.quit()

python等待网页加载_Python Selenium等待(waits)页面加载完成的三种方法相关推荐

  1. python两个元组相加_Python两个字典键同值相加的几种方法

    Python中,如何合并两个键相同,值为元祖类型的字典? dicxs={"李明":("男",19), "杨柳":("女" ...

  2. python画一个点_pygame学习笔记(2):画点的三种方法和动画实例

    1.单个像素(画点) 利用pygame画点主要有三种方法: 方法一:画长宽为1个像素的正方形 import pygame,sys pygame.init() screen=pygame.display ...

  3. python if多条件并列判断的三种方法

    python if多条件并列判断的三种方法 如果使用python的if进行多个条件表达式的判断呢?下面介绍三种方法: 使用and或or来连接多个条件表达式,比如条件1 and 条件2 and条件3等等 ...

  4. python网页爬取方法_Python爬取网页的三种方法

    # Python爬取网页的三种方法之一:  使用urllib或者urllib2模块的getparam方法 import urllib fopen1 = urllib.urlopen('http://w ...

  5. python下载方法-python实现下载文件的三种方法_python

    本篇文章主要介绍了python实现下载文件的三种方法,最常用的方法就是通过Http利用urllib或者urllib2模块还有requests,有兴趣的可以了解一下. Python开发中时长遇到要下载文 ...

  6. 怎么在html中加入pjax,pjax加载多说的三种方法

    多说官方提供的方法:http://dev.duoshuo.com/docs/50b344447f32d30066000147 这里不进行说明,请进入上述链接进行查看. 效果说明:进入文章页需要点击按钮 ...

  7. VC6.0加载lib文件的三种方法

    MFC编写程序,都要用到动态链接库,MFC相关的动态库有MFCD42和MFC42等,MFC框架程序已经自动加载,那么如何引入第三方的动态链接库到工程中呢? 静态链接库是要先把程序中所需要使用的函数编译 ...

  8. python 下载文件-python实现下载文件的三种方法_python

    本篇文章主要介绍了python实现下载文件的三种方法,最常用的方法就是通过Http利用urllib或者urllib2模块还有requests,有兴趣的可以了解一下. Python开发中时长遇到要下载文 ...

  9. python判断ip地址是否合法_Python课堂:判定IP地址合法性的三种方法

    IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1~255).(0 ...

最新文章

  1. 基于大数据的Uber数据实时监控(Part 2:Kafka和Spark Streaming)
  2. C# MemoryStream先写后读的奇怪现象
  3. 最小熵原理:“物以类聚”之从图书馆到词向量
  4. Centos 安装python 3.7 遇到 ModuleNotFoundError: No module named _ctypesmake [install] Error 1(亲测下面的红字内容)
  5. 数字电路知识点杂谈(自用,其他人看不懂)
  6. 是未来的风口还是无声的战争,中国的saas平台究竟能不能做起来?
  7. 办公自动化-演练-统计日报的演练-0223
  8. python迭代器好处_python迭代器
  9. linux命令里的xz是干嘛的,linux xz命令详解
  10. 编写Spark SQL查询程序
  11. 数据分析案例:超市数据分析
  12. 小学英语计算机融合,小学英语作业盒电脑版
  13. jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company
  14. 政府安全资讯精选 2017年第十二期 中国网络安全漏洞披露平均效率远超美国; 美国美国国土安全部发布指令,要求联邦机构强化Web和电子邮件安全...
  15. lan代表计算机什么,LAN 是什么
  16. 软件测试流程及主要内容
  17. 1.MySQL 常用语句
  18. 我的世界java版复仇双持_我的世界战备双持2mod整合包
  19. openpyxl官方教程参考手册(翻译)
  20. 《R语言数据分析》期末试题

热门文章

  1. 有关角度分秒,和角度六十进制转换十进制的计算python小工具
  2. UI/UX设计师进阶之路
  3. three,js项目开发总结 - 创建精灵字体
  4. Dota英雄手册V6.79C更新
  5. 32位,16位,8位系统的区别以及sizeof函数
  6. 众目睽睽下隐身,zk-SNARK黑科技如何保护区块链隐私
  7. 银联在线 网关支付(中国银联全渠道系统商户接入 测试指引-银联网关支付产品)
  8. 嵌入式linux开发面试题解析——C语言部分
  9. 用例-----U盘插上之后一直在弹出可能的原因?
  10. 富华力鼎:抖音短视频的运营技巧