Selenium如何遍历页面指定class所有元素判断短信回复状态
Selenium遍历同class所有元素的实现方案
find_element() 方法的设计逻辑就是仅返回匹配定位规则的第一个DOM元素,要批量获取所有同class的元素,直接改用 find_elements()(方法名末尾带s)即可,该方法会返回所有符合定位条件的元素组成的列表,直接遍历列表就能实现你要的判断逻辑。
适配你Podium短信统计场景的参考代码
from selenium.webdriver.common.by import By # 替换成你自己Podium账号的显示名称 my_name = "你的账号显示名" responded_contacts = [] # 获取所有匹配chakra-avatar__initials类名的元素,返回列表 all_name_elements = driver.find_elements(By.CLASS_NAME, 'chakra-avatar__initials') # 遍历元素逐个判断 for elem in all_name_elements: contact_name = elem.text.strip() # 去掉文本前后多余空白、换行,避免判断误差 if contact_name and contact_name != my_name: responded_contacts.append(contact_name) print(f"已回复联系人:{contact_name}")
实际使用注意事项
- Podium的会话列表是动态懒加载的,不在当前可视区域的会话不会渲染到DOM中,直接抓元素会漏统计。你需要先模拟滚动会话列表区域,把所有会话加载完成后再执行元素抓取,才能拿到完整的已回复/未回复名单。
- 不建议全局搜索
chakra-avatar__initials类名:聊天窗口内、个人菜单入口也会用到这个头像类名,会导致统计到无关的名字。你可以先定位到左侧会话列表的父容器元素,再在父容器范围内调用find_elements抓头像名,统计结果会更准确。 - 未回复联系人的判断不能仅靠头像元素:你可以结合会话最后一条消息的发送方标识做判断,如果最后一条消息发送方是你自己、且没有对方后续回复,就归类到未回复名单。
内容的提问来源于stack exchange,提问作者thatoneguy
相关产品推荐
相关产品推荐

