selenium 判断元素是否存在

目的:自动化中通常需要根据元素是否存在,来决定下一步的动作;比如 A存在就点击 下一步,B存在就点击保存;用于控制脚本的逻辑;

selenium中判断元素有几种方式

1、find_element(locateType, locate)

2、WebDriverWait(self.driver, 20, 0.5).until(EC.presence_of_element_located((locateType, locate)))

那么推荐使用2;如下:

# 判断元素是否存在
def elementTrue(drObject,locateType,locate):
    # 等待元素加载出来
    el = 1
    try:
        WebDriverWait(drObject, 5, 0.5).until(EC.presence_of_element_located((locateType, locate)))
    # 返回元素
    except:
        pass
        el = 0
        return el
    if el == 1:
        return el

为什么不用方式1,因为页面加载快慢问题,方式1只会判断一次,恰巧元素正在加载中,那么返回就失败即元素不存在了;

方式2是driver内置的方法,显示等待,超时时间20s内,不断重试,只要元素在20s内加载出来了,就返回存在;这比方式1要稳定很多;

如果您想在 Selenium 中循环判断元素是否出现,并在元素出现后执行某个动作,可以使用 Python 中的 while 循环结合 try-except 语句块和条件判断语句。例如,以下代码会不断循环检查页面上的某个元素是否出现,如果元素出现则执行某个动作: ```python 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 # 初始化浏览器 driver = webdriver.Chrome() # 打开页面 driver.get("https://www.example.com/") # 设置最大等待时间为 10 秒 wait = WebDriverWait(driver, 10) # 定义目标元素的选择器 target_selector = (By.ID, "my-element-id") # 使用 while 循环判断元素是否出现 while True: # 等待目标元素出现 try: target_element = wait.until(EC.presence_of_element_located(target_selector)) except: # 如果元素未出现,则继续循环等待 continue # 如果元素已出现,则执行某个动作 print("目标元素已出现!") # 在此处添加您要执行的动作 # 退出循环 break ``` 在上述代码中,我们首先定义了目标元素的选择器(在本例中为 ID 为 "my-element-id" 的元素)。然后,我们使用 while 循环不断执行 try-except 语句块,直到目标元素出现为止。在 try 语句块中,使用 `wait.until()` 方法等待目标元素出现,如果元素未出现则抛出异常,在 except 语句块中进行捕获并继续循环等待。当目标元素被找到后,程序会执行某个动作(在本例中为打印一条消息),然后使用 break 语句退出循环。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值