Selenium学习和使用过程中,比较常见的一个问题就是,弹窗定位不到、元素定位不到等,除了页面有frame、多窗口,就是没有加等待。代码运行的速度远远高于浏览器加载的速度,就像双人跑步运动,一个人快一个人慢总是会摔倒,浏览器页面没有加载出来元素,程序就执行相应的代码,就是抛出异常。

等待,selenium中提供常用的三种:强制等待time.sleep()、隐性等待implicitly_wait()、显性等待WebDriverWait()。

强制等待time.sleep()

强制等待字面意思,强制程序等待读秒到一定时间才执行下一步。需要导入time模块才可以使用。下面是之前文章里的代码。

登录企业邮箱后,点击设置按钮,必须等待3秒,才去执行下一步的操作,不管设置页面有没有加载完成。这样有时候会造成时间的浪费,影响程序执行的速度。

隐性等待implicitly_wait()

隐型等待implicitly_wait()就是在一定的时间内等待页面加载完成,比如隐性等待10秒,5秒页面加载完成,则结束等待,执行下一步;如果10秒钟还没有加载完成也会执行下一步。浏览器加载完成与否可以看浏览器标签栏的状态按钮,“X”就是没加载完成,但是有些页面元素加载完成,但是有些JS、图片加载慢元素,导致要一直等到最大等待时长才进行下一步。

隐性等待对整个driver的周期都起作用,所以只要设置一次即可。

显性等待WebDriverWait()

显示等待是针对元素个体进行相关等待判定,WebDriverWait()的定义如下:

- driver - WebDriver实例(如,Firefox, Chrome或Remote)

-timeout-超时前的秒数

- poll_frequency -调用之间的睡眠间隔,默认情况下是0.5秒。

- ignored_exceptions -调用期间忽略的异常类的可迭代结构。

默认情况下,它只包含NoSuchElementException。

WebDriverWait()程序每隔xx秒看一眼,配合该类的until()和until_not()方法,根据判断条件而进行灵活地设置等待时长和睡眠间隔。如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException。

在实际过程中,可以选择相应的等待方式,我最常用的就是显示等待,然后可以写一个公共类调用即可,就是上图中loc中的两个参数。

js等待5秒后执行_Python+selenium自动化之等待相关推荐

  1. js等待5秒后执行_NBA赛场搞笑犯规:波波维奇开场5秒执行砍鲨战术,奥尼尔一脸茫然...

    虽然NBA赛场总是充满着激情与对抗,却从来不乏让人忍俊不禁的搞笑瞬间.沙克·奥尼尔便是NBA中的一大活宝,有他在的地方总是能让人哈哈大笑.07年全明星的一场训练中,奥尼尔突然在中场附近直接和詹姆斯斗起 ...

  2. js等待5秒后执行_厦门同安首台智能垃圾分类回收柜机投用 扫二维码5秒后回收变现...

    居民在智能垃圾分类回收柜机前排起了队. 台海网9月11日讯 据厦门晚报报道 一秒扫描,五秒到账,垃圾分类实现智能化,不仅能自动识别称重,还能变废为宝,兑换成商品.昨天,一台智能垃圾分类回收柜机在同安区 ...

  3. js如何让方法在延迟两秒后执行

    var int=self.setInterval(function(){  // 这个方法是说在延迟两秒后执行大括号里的方法       location.reload();   // 这个方法是刷新 ...

  4. python三种等待方式_Python selenium 三种等待方式详解

    本文摘自:http://blog.csdn.net/huilan_same/article/details/52544521 发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性. 很 ...

  5. android 代码等待一秒,【报Bug】安卓微信旧版本7.0.2 ,支付完成,等待几秒后,再点击完成 回到小程序,跳转不了页面。...

    详细问题描述 微信旧版本7.0.2 ,支付完成,等待几秒后,再点击完成 回到小程序,跳转不了页面. (DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你 ...

  6. php多少秒后跳转_php等待几秒后跳转

    php等待几秒后跳转 一.PHP脚本控制跳转方式,通过改写HTTP头信息来进行跳转 a)header refresh方式:<?php header("refresh:5;url=htt ...

  7. html 跳转后关闭当前页面,js实现3秒后关闭当前页面

    1.js实现3秒后关闭当前页面 var time=3; function closeWindow(){ window.setTimeout('closeWindow()',1000); if(time ...

  8. python的等待代码是什么_Python selenium 三种等待方式详解

    1.目的背景 解决问题:下拉框定位不到.弹框定位不到-各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加等待. 原因:代码运行速度快,而浏览器加载渲染速度慢 解决办法:加等待,目 ...

  9. vue多个等待几秒再执行,可以用await加setTimeout实现

    用的vue,刚开始一直想只用setTimeout //错误示意 liucheng(){var _this = this;_this.active = 'flipped';setTimeout(_thi ...

最新文章

  1. 云原生生态周报 Vol.9| K8s v1.15 版本发布
  2. 2022版全球及中国消防设备市场营销策略分析与竞争趋势展望报告
  3. 西工大java高级网络编程_奥鹏西工大16春《JAVA高级网络编程》平时作业
  4. 笨方法学python3 mobi_[下载]Learn Python 3 the Hard Way(已更新完整版PDF\AZW3\EPUB\MOBI)...
  5. Facebook Messenger 被曝漏洞,可导致恶意软件获得持续访问权限(详细分析)
  6. 送给那些渐渐远离的朋友(转载)
  7. 2021-1-28Linux学习纪要
  8. Nand Flash驱动程序分析
  9. Thread 1: signal SIGABRT问题解决
  10. window 文件夹 标题栏 工具栏不见了
  11. 电脑连不上ishanghai_i-Shanghai免费上网将不限时 详解如何上网不掉线
  12. python知道三角形三边求面积(海伦公式)
  13. 信息系统项目管理师---第五章 项目范围管理
  14. pandas——描述性统计方法和时间类型
  15. Matlab实用程序--图形应用-阶梯图
  16. carsim与simulink联合仿真-matlab版本切换
  17. SSM框架自学笔记--------巨细!!!!!!!!
  18. 男人健康八年一个转折
  19. 素问·阴阳应象大论原文
  20. 电平触发器(D触发器)

热门文章

  1. 喵哈哈村的魔法考试 Round #5 (Div.2) C
  2. 基于Delphi的Socket I/O模型全接触
  3. USACO_2_1_The Castle
  4. Bitmap too larget to be uploaded into a texture的解决方法
  5. spring mvc异常统一处理(ControllerAdvice注解)
  6. 解决使用RabbitTemplate操作RabbitMQ,发生The channelMax limit is reached. Try later.问题
  7. Eclipse运行时无法加载主类的解决方法
  8. BigDecimal空指针异常——个人应用
  9. CentOS使用chkconfig增加开机服务提示service xxx does not support chkconfig的问题解决
  10. 为什么CSS使用假元素?