You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Selenium代码实现删除所有0成员群组直至无符合项?

解决方法

修改后的代码会持续检查并删除所有成员数为0的群组,直到页面上不存在这类群组为止:

def select_delete_group(self):
    while True:
        try:
            # 等待页面加载完成,查找所有包含成员信息的元素
            WebDriverWait(self.driver, 20).until(
                expected_conditions.presence_of_all_elements_located((By.TAG_NAME, "user-info")))
            
            # 定位第一个包含"0 members"的群组元素
            target_group = None
            users = self.driver.find_elements(By.TAG_NAME, "user-info")
            for members in users:
                m = members.find_element(By.TAG_NAME, "a")
                if '0 members' in m.text.strip():
                    target_group = m
                    break
            
            if not target_group:
                # 没有找到0成员的群组,退出循环
                break
            
            # 执行删除流程
            target_group.click()
            WebDriverWait(self.driver, 20).until(
                expected_conditions.element_to_be_clickable((By.XPATH, self.delete_group_xpath))).click()
            WebDriverWait(self.driver, 20).until(
                expected_conditions.element_to_be_clickable((By.XPATH, self.ok_button_xpath))).click()
            
            # 等待页面刷新完成,避免下次查找出现元素失效错误
            WebDriverWait(self.driver, 20).until(
                expected_conditions.staleness_of(target_group))
        
        except Exception as e:
            # 出现异常(如元素找不到)时退出循环
            break

关键改动说明

  • 用while True循环持续执行检查逻辑,直到找不到目标群组或出现异常才停止
  • 每次循环都重新获取页面元素:删除群组后页面会刷新,之前的元素列表会失效,必须重新查找
  • 找到第一个符合条件的群组就处理,完成后等待页面刷新(通过staleness_of判断原元素已失效,确认页面更新)
  • 移除固定的time.sleep(10),改用Selenium显式等待,提升代码效率与稳定性
  • 增加异常捕获,避免页面意外变化导致程序崩溃

内容的提问来源于stack exchange,提问作者Numra Hashmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:15:31