Selenium 循环删除页面元素

本文介绍了在Selenium中不能直接使用for循环删除页面元素的原因——元素删除后页面会重新渲染。为解决此问题,提出了采用while循环的方法,通过不断删除数组中的第一个元素,直至完成所有元素的删除操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之所以不能用for 循环删除的原因是元素删除后页面会重新渲染;

取出所有的元素,使用while循环依次删除数组里的第一个元素,直到全部删除

from selenium import webdriver
import time

dr = webdriver.Chrome()
dr.get('')
dr.implicitly_wait(10)

dr.find_element_by_css_selector("input[name='username']").send_keys("")
dr.find_element_by_css_selector("input[name='password']").send_keys("")

dr.find_element_by_css_selector("button[type='submit']").click() # 登录

# dr.find_element_by_xpath("//ul[@class='main-nav']//li[3]").click()
# #点击题目 此方法适用于固定的位置,不同角色的栏目位置不一样,因此不推荐使用

dr.find_element_by_link_text("题目").click()  #直接使用link_text为题目的元素

time.sleep(1)

dr.find_element_by_partial_link_text("考点管理").click()  #点击考点
# partial_link_text和link_text的区别是一个是模糊搜索,一个是精准搜索

#dr.find_element_by_xpath("//div[@class='page']//div//a[1]").click() #第一页数据

dr.implicitly_wait(2)
while True:
    delEles = dr.find_elements_by_xpath("//*[@id='del_btn']")  #取出页面所有的删除键

    if delEles == []:       #删除所有的元素或元素为空时,跳出循环
        break

    delEles[0].click()  #点击删除第一个删除按钮
    dr.find_element_by_css_selector(
        "#layui-layer1 > div.layui-layer-btn.layui-layer-btn- > a.layui-layer-btn0").click()  #确定删除
    dr.refresh()
    time.sleep(1)

dr.implicitly_wait(10)

dr.quit()
   

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值