我是靠谱客的博主 娇气母鸡,最近开发中收集的这篇文章主要介绍selenium之元素等待,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1.何为元素等待呢?

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

2.元素等待的三种方法

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

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

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

3.元素等待举例

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Firefox()
#在淘宝中搜索笔记本电脑
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')
driver.implicitly_wait(20)
# 在定位价格时,添加元素等待
# 方式一:
# price = WebDriverWait(driver, 20).until(lambda driver:driver.find_element_by_css_selector('.price > strong'))
# print(price.text)
# 方式二:
price = driver.find_element_by_css_selector('.ctx-box > .title > a')
is_display = WebDriverWait(driver, 20).until(lambda driver: price.is_displayed())
# is_displayed()元素是否可见(页面是否加载出来)
print(is_display)
if is_display:
# 如果元素可见,再执行点击,输入,清空等操作
price.click()
else:
# 不可见
pass
driver.close()

最后

以上就是娇气母鸡为你收集整理的selenium之元素等待的全部内容,希望文章能够帮你解决selenium之元素等待所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部