元素等待实战 笔记

笔记

在这里插入图片描述

# 1.强制等待,就是sleep()方法
from selenium import webdriver
from time import sleep
dr = webdriver.Chrome()
dr.get("https://www.baidu.com")
sleep(3)
dr.find_element_by_id("kw").send_keys("双击")
dr.quit()

# 隐式等待
# implicitly_wait()是webdriver提供的一个超时等待方法,比sleep更智能
# 可以理解为在规定时间内,浏览器不停地刷新页面(页面加载时),直到找到目标元素.在规定时间内找不到目标元素,就抛出异常,不设置时默认0
from time import sleep
from selenium import webdriver

dr = webdriver.Chrome()
dr.get("https://www.baidu.com")
dr.implicitly_wait(10)     # 隐式等待
dr.find_element_by_id('kw').send_keys('双击')
dr.find_element_by_id('su').click()
dr.find_element_by_xpath('//*[@id="1"]/h3/a').click()
sleep(2)
dr.quit()

# 显示等待
# 明确要等到某个元素的出现或者是某个元素可单机,如果等不到,就一直等;除非在规定时间内没有找到该元素,抛出异常
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC  # 导入EC模块
from time import sleep


# # WebDriverWait()是显示等待类, driver是驱动,5表示最长超时时间,单位s;0.5表示每隔0.5秒,检测元素是否存在的频率;
# # until表示在等待时间,每隔一段时间调用这个传入的方法,知道返回值为True;
# # EC.presence_of_element_located()方法是指只要有一个符合条件的元素加载出来就通过
#
# driver = webdriver.Chrome()
# driver.get('https://mail.sina.com.cn')
# element = WebDriverWait(driver, 5, 0.5).until(EC.presence_of_element_located((By.ID, 'freename')))
# element.send_keys('hello')

dr = webdriver.Chrome()
dr.get("https://www.baidu.com")

dr.find_element_by_id('kw').send_keys('搜索')
dr.find_element_by_id('su').click()
# 显示等待
# WebDriverWait(dr, 2, 0.5).until(
#     lambda el: dr.find_element_by_xpath('//*[@id="1"]/h3/a'))
#     # lambda el: dr.find_element_by_xpath('//[@id="1a"]/h3/a'), message='异常消失')

# # 定位元素为假时,进行下一步
# WebDriverWait(dr, 2, 0.5).until_not(
#    lambda el: dr.find_element_by_xpath('//*[@id="1a"]/h3/a'))

# 获取第一条搜索结果,并点击
dr.find_element_by_xpath('//*[@id="1"]/h3/a').click()

sleep(3)
dr.quit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值