🌸 欢迎来到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秒,如果还在就会报错,如果已近消失,就会继续执行下面的代码!!
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("发生异常:")