selenium元素等待

1.何为元素等待呢?

元素等待:js代码执行渲染期间,导致数据/标签加载缓慢,如果元素没有加载完成,直接通过find_element去进行定位,会出现元素不存在的异常。

2.元素等待的三种方法

(1) time.sleep(10) 强制性等待,不管元素在设置时间范围内是否加载出来,都必须要等待固定的时间。

(2)WebDriverWait(10) 智能等待的方法,最多等待10秒,10秒之后仍然没有元素,会抛出异常。10秒内找到这个元素,直接向下执行代码。这个方法一般适用于单个元素的等待;

(3)implicitly_wait(10) 最大等待时间10秒,针对的是整个页面,给当前页面设置最大等待时间;

3.元素等待举例

  1. from selenium import webdriver
  2. from selenium.webdriver.support.wait import WebDriverWait
  3. driver = webdriver.Firefox()
  4. #在淘宝中搜索笔记本电脑
  5. driver.get( 'https://s.taobao.com/search?initiative_id=tbindexz_20170306&ie=utf8&spm=a21bo.2017.201856-taobao-item.2&sourceId=tb.index&search_type=item&ssid=s5-e&commend=all&imgfile=&q=%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91&suggest=history_1&_input_charset=utf-8&wq=&suggest_query=&source=suggest')
  6. driver.implicitly_wait( 20)
  7. # 在定位价格时,添加元素等待
  8. # 方式一:
  9. # price = WebDriverWait(driver, 20).until(lambda driver:driver.find_element_by_css_selector('.price > strong'))
  10. # print(price.text)
  11. # 方式二:
  12. price = driver.find_element_by_css_selector( '.ctx-box > .title > a')
  13. is_display = WebDriverWait(driver, 20).until( lambda driver: price.is_displayed())
  14. # is_displayed()元素是否可见(页面是否加载出来)
  15. print(is_display)
  16. if is_display:
  17. # 如果元素可见,再执行点击,输入,清空等操作
  18. price.click()
  19. else:
  20. # 不可见
  21. pass
  22. driver.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值