selenium添加等到时间

#coding:utf-8
#__author__='wang'


#比如一个网页在通过selenium的浏览器打开的时候,由于网络慢等原因导致页面一直处在加载
的过程当中,页面中的一些标签可能没有渲染出来,由于代码的执行速度比较快,当通过代码进行
查找元素时,页面的元素可能不存在。这个时候程序会出现ElementNotExists异常

import time
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

browser = webdriver.Firefox()
browser.get('https://www.baidu.com')

#time.sleep()让线程休眠一段时间,等休眠时间到了之后,不管元素是否找到,仍然强制往后
执行
#一般这种方式在调试的时候经常用,代码中尽量少用它会影响程序的执行效率
# print "开始休眠"
# time.sleep(30)
# print '休眠结束'

#WebDriverWait该类是用于设置显性等待,经常配合until()和until_not()函数使用,
在页面加载期间,每隔一段时间去查看元素是否已经加载出来,如果没有加载出来,则继续等待,
直到超出最大的等待时间,最后还没有发现该元素,则抛出异常,如果在最大的时间内找到了该
元素则继续往后执行代码
print '开始查找'
# a_search = webdriver(browser,30).until(lambda browser:browser.
find_element_by_xpath('//input[@id="kw"]'))
#在页面中可能标签已将存在了,在浏览器上还没有渲染出来,这种情况下,
通过find_element_by_xxx是可以找到该标签的,但是不能点击
button = browser.find_element_by_id('su')
#is_displayed()用于判断一个标签是否在浏览器上显示出来
is_visiable = WebDriverWait(browser,10).until
(lambda browser:button.is_displayed())
print is_visiable
#让button元素在10秒这个时间内进行循环检测直到返回True,说明浏览器显示该按钮了
button.click()
#ElementNotVisiableExction:元素不可见异常


print '查找结束'
# print a_search

#以Anaconde官网为例
# a_element = browser.find_element_by_xpath
('//a[@data-accordion="#top-search"]')
# print a_element
# a_element.click()

#设置隐性等待时间
#隐性等待和time.sleep()类似,设置一个最长等待时间,如果网页在规定时间内加载完成,
则执行下一步,否者会一直处于等待状态,直到超时,一般一个程序内只调用一次方法即可
browser.implicitly_wait(30)
browser.find_element_by_id('kw').send_keys('123')

#隐性等待implicitly_wait和显性等待WebDriverWait的区别
#1.implicitly_wait是针对一个页面,一个会话窗口而言,是在等待该页面上所有的元素被
加载完成,而不是针对某一标签元素。等待页面上的各个元素渲染完成之后再进行查找
#2.WebDriverWait是针对某一个元素标签而言,不是在等待整个页面渲染完成,而是在等待
这一个元素是否渲染完成,然后去定位该元素,所以,每一个元素都可以使用它判断是否出现





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值