笔记
# 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()