selenium隐性等待,显示等待,显示等待封装

强制等待

不管发生什么,我都等你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()
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亚索不会吹风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值