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中的两个参数。

●Python+selenium自动化测试之判定元素是否存在

●名师讲堂专栏

●软件测试“师徒制”,开启培训新纪元

●织雀教育响应国家政策,解决退伍军人就业难题

webdriver 等待页面加载完成_Python+selenium自动化之等待相关推荐

  1. webdriver 等待页面加载完成_Python爬虫,登陆神器Selenium等待(waits)页面加载的三种方法...

    网页常常会因为网络原因,程序问题等等导致打开网页慢,一直在那里打圈圈. 出现这种情况时网页里的很多元素就没有加载完成,如果你刚好要定位的元素没有加载完,这时定位的话程序就会抛出异常. 所以程序里要加入 ...

  2. js等待5秒后执行_Python+selenium自动化之等待

    Selenium学习和使用过程中,比较常见的一个问题就是,弹窗定位不到.元素定位不到等,除了页面有frame.多窗口,就是没有加等待.代码运行的速度远远高于浏览器加载的速度,就像双人跑步运动,一个人快 ...

  3. python跳转到新页面、如何等待页面加载完_Selenium Python:如何等待页面加载?

    As @ user227215说你应该使用WebDriverWait来等待你的页面中的元素: from selenium import webdriver from selenium.webdrive ...

  4. python跳转到新页面、如何等待页面加载完_python urllib2 – 在抓取之前等待页面完成加载/重定向?...

    我正在学习制作网络抓取工具,并希望抓住TripAdvisor的个人项目,使用urllib2抓取html. 但是,我遇到了一个问题,使用下面的代码,我回来的html是不正确的,因为页面似乎需要一秒钟重定 ...

  5. python selenium 点击加载更多_如何等待页面加载,然后按selenium中的“加载更多”按钮?...

    你可能会在页面底部看到谷歌广告.在from selenium import webdriver from selenium.webdriver.common.by import By from sel ...

  6. python selenium 等待页面加载_python selenium 三种等待方式详解(实战常用)

    引言: 当你觉得你的定位没有问题,但是却直接报了元素不可见,那你就可以考虑是不是因为程序运行太快或者页面加载太慢造成了元素不可见,那就必须要加等待了,等待元素可见再继续运行程序: 注:当使用该放发的时 ...

  7. java selenium (十三) 智能等待页面加载完成

    我们经常会碰到用selenium操作页面上某个元素的时候, 需要等待页面加载完成后, 才能操作.  否则页面上的元素不存在,会抛出异常. 或者碰到AJAX异步加载,我们需要等待元素加载完成后, 才能操 ...

  8. java等待页面加载_java selenium (十三) 智能等待页面加载完成

    我们经常会碰到用selenium操作页面上某个元素的时候, 需要等待页面加载完成后, 才能操作.  否则页面上的元素不存在,会抛出异常. 或者碰到AJAX异步加载,我们需要等待元素加载完成后, 才能操 ...

  9. python如何校验页面元素是否加载完毕_爬虫(八十七)等待页面加载完成(Waits)...

    现在的大多数的Web应用程序是使用Ajax技术.当一个页面被加载到浏览器时, 该页面内的元素可以在不同的时间点被加载.这使得定位元素变得困难, 如果元素不再页面之中,会抛出 ElementNotVis ...

  10. html加载状态,js等待页面加载完成

    页面加载完成后等待一段时间在执行js的方法,时间例如方法: function test(){return 1;} 页面加载完毕事件: window.onload = function(){ setTi ...

最新文章

  1. Spock测试框架中的注解使用
  2. openstack mysql 故障_Openstack mysql自发连接错误2006,“mysql服务器已经离开
  3. linux按顺序运行命令,linux – 安排cron作业打开终端并按顺序运行命令
  4. AI开发者大会:2020年7月3日09:30--09:50司罗《为商业搭建语言桥梁》
  5. zoj-3802-Easy 2048 Again
  6. iOS和android的屏幕适配
  7. kotlin学习之基础(一)
  8. 中大东校小米路由器mini实现inode上网,ipv6 wifi【中大】【东校】【inode】【ipv6】...
  9. 因果推断笔记——DR :Doubly Robust学习笔记(二十)
  10. windows2003 IIS6 部署MVC4程序等等
  11. UML的简单介绍和画法
  12. PowerDesign逆向生成数据表结构PDM文件
  13. 零点起算法44求最小值C语言,【算法链表面试题】面试问题:C语言实现“关… - 看准网...
  14. Smartbi的下载安装教程
  15. Win10系统如何关闭防火墙?
  16. APP产品经理(一)
  17. 《转载》o(1), o(n), o(logn), o(nlogn) 是什么含义?
  18. 【华为机试真题 Python实现】查找众数及中位数
  19. uniapp和vue课程表实现、会议预约实现[表格table相同内容行的合并]
  20. 南天收藏库为什么大不了_参加技术会议:有什么大不了的?

热门文章

  1. 如果你是中国普通式的IT人——总有些无关风月的执着
  2. 活动目录管理之批量创建域用户
  3. ORACLE 常用操作命令
  4. php socket 读网页,PHP webSocket实现网页
  5. loadrunner性能测试步骤_性能测试LoadRunner操作流程之一
  6. log4j配置文件,日志文件的模板
  7. Oracle RAC tns 00505,Alert Log Errors: 12170 TNS-12535/TNS-00505: Operation Timed Out
  8. jtds 连接mysql_JAVA 使用jtds 连接sql server数据库
  9. 一段看不懂的乱码字符_字符乱码的解读
  10. LintCode—删除链表中的元素(452)