强制等待
不管发生什么,我都等你2秒,也只有2秒
time.sleep(2)
driver.find_element_by_xpath('//*[@id="passport-login-pop-dialog"]/div/div/div/div[3]/a').click()
隐性等待
from selenium import webdriver#导包
driver=webdriver.Chrome()#生成一个谷歌浏览器的操作对象
driver.get('https://www.baidu.com/')
#这个只需要设置一次就可以了,不用每个定位前面都得设置
driver.implicitly_wait(30)#隐性等待,最长30s
显性等待
import time
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium import webdriver#导包
driver=webdriver.Chrome()#生成一个谷歌浏览器的操作对象
driver.get('https://www.baidu.com/')
driver.maximize_window()
driver.find_element_by_id('kw').send_keys("这是使用id定位,然后键盘输入")
driver.find_element_by_class_name('toindex').click()
driver.find_element_by_link_text('登录').click()
time.sleep(2)
#要定位和等待的目标元素
xpath_element='//*[@id="passport-login-pop-dialog"]/div/div/div/div[3]/a'
#语法说明:WebDriverWait(driver,10,1)设置 等待10秒钟,每隔1秒去查看对应的元素是否可见;如果可见,继续下一步操作;如果不可见,则继续等待,直到10s结束,如果元素还是不可见,则抛出超时异常,until(EC.visibility_of_element_located((By.XPATH,xpath_element)))设置等待的的目标元素
WebDriverWait(driver,10,1).until(EC.visibility_of_element_located((By.XPATH,xpath_element)))
#代码到这里就说明元素等到了,开始执行点击
driver.find_element_by_xpath('//*[@id="passport-login-pop-dialog"]/div/div/div/div[3]/a').click()#点击注册
显示等待封装一下,每个元素定位时直接使用这个函数来定位,不用每个元素都得写了
from time import sleep
from driver_ import drivers, kill_chrome
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
def element(driver, positioning_method, positioning_element):
'''
:param driver: 浏览器对象
:param positioning_method: 定位方式By.XPATH,直接使用BY.出各种方式
:param positioning_element: 定位元素
:return: 定位成功返回元素对象,定位失败返回False
'''
maximum_loading_time = 20
try:
element_whether_existence = WebDriverWait(driver, maximum_loading_time).until(
EC.presence_of_element_located((positioning_method, positioning_element)))
return element_whether_existence
except:
print(f'元素不存在,或者{maximum_loading_time}s未加载出来')
return False
try:
driver = drivers('11')
except:
kill_chrome()
driver = drivers('11')
sleep(2)
driver.get('https://blog.csdn.net/aaaaaaaaanjjj/article/details/134991742')
driver.find_element_by_xpath('//*[@id="toolBarBox"]/div/div[2]/ul/li[3]/a').click() # 点击收藏,出现收藏弹窗列表
element1=element(driver,By.XPATH,'//*[@id="csdn-collection"]/div[2]/div[2]/ul/li').click()