Python+selenium等待某个元素消失(如加载中)再继续执行代码

专栏导读

  • 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手

  • 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页

  • 👍 该系列文章专栏:请点击——>Python办公自动化专栏

  • 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏

  • ❤️ 欢迎各位佬关注! ❤️

之前我们分享过利用selenium,等待某个元素出现在执行代码,点我跳转,那么如果是等待某个元素消失再执行某个代码该如何操作呢,我们看一下需求!

需求解析

如下图,我在点击查询按钮后,整个页面都在加载中,那么查询的数据量有多有少,就会造成等待时间的差异,也可以理解为:当页面出现【加载中】表示页面数据还未加载完成,当【加载中】消失后,则表示,整个页面数据加载完毕

在这里插入图片描述

解决方法

使用WebDriverWait对象等待元素的消失,并使用 presence_of_element_located方法来定位要等待的元素。如果元素在指定的时间内没有消失,那么就会抛出一个超时异常

element = wait.until(EC.presence_of_element_located((By.ID, 'element_id'))),这里可以用By.xpath,或者其他的,大家自己决定

# 等待元素的消失
wait = WebDriverWait(driver, 10)element = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="root"]/div/div[6]/div/div[1]/div/div[2]/div/div[1]/div/div/div')))
while element.is_displayed():
	pass
    
# 元素消失后,继续执行后续代码
print("元素已经消失,继续往下运行")

所以我们可以趁页面还在加载中时,快速将【加载中】这个元素,利用点击元素——右击——Copy—— Copy Xpath,将该元素的xpath复制下来。

最后再加上`try——except`,实现代码功能

在这里插入图片描述
在这里插入图片描述

我的代码

判断加载中是否消失,最大等待时间25秒,如果还在就会报错,如果已近消失,就会继续执行下面的代码!!

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_driver = "./chromedriver.exe"
driver = webdriver.Chrome()
try:
    wait = WebDriverWait(driver, 2)
    element = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="root"]/div/div[6]/div/div[1]/div/div[2]/div/div[1]/div/div/div')))
    while element.is_displayed():
        pass

    print("加载中已消失")
except:
    print("发生异常:")

更多的关于selenium的小知识,大家可以去我的selenium专栏看一下:[点我跳转]

在这里插入图片描述

总结

希望对大家有帮助

致力于办公自动化的小小程序员一枚#

都看到这了,关注+点赞+收藏=不迷路!!

如果你想知道更多关于Python办公自动化的知识各位大佬给个关注吧!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Python使用Selenium等待页面加载是非常重要的,因为有时候页面的加载需要一定的时间,如果没有等待页面加载完成就进行后续操作,可能会导致元素定位失败或者获取到的数据不准确。 Selenium提供了多种等待页面加载的方法,下面是一些常用的等待方式: 1. 隐式等待(Implicit Wait):通过设置一个全局的等待时间,在这个时间内,Selenium等待页面加载完成。如果在规定时间内页面加载完成,则立即执行后续操作;如果超过规定时间页面还未加载完成,则抛出异常。可以使用`driver.implicitly_wait(time_to_wait)`来设置隐式等待时间。 2. 显式等待(Explicit Wait):通过指定某个条件,等待满足条件后再执行后续操作。可以使用`WebDriverWait`类结合`expected_conditions`模块来实现显式等待。例如,可以使用`presence_of_element_located`方法来等待个元素出现在页面上。 下面是一个使用显式等待的示例代码: ```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) # 等待元素出现 element = wait.until(EC.presence_of_element_located((By.ID, "element_id"))) # 执行后续操作 element.click() # 关闭浏览器 driver.quit() ``` 在上面的代码,使用`WebDriverWait`类设置了一个最长等待时间为10秒,然后使用`presence_of_element_located`方法等待元素出现。如果在10秒内元素出现了,则继续执行后续操作;如果超过10秒元素还未出现,则抛出异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一晌小贪欢

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

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

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

打赏作者

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

抵扣说明:

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

余额充值