1. 场景故事|“张三在吗?”“麦没开,听不清!”
作为HR,我曾用15分钟逐一手动点名50人的线上培训,直到漏记一位试用期员工“未出席”导致他错失转正答辩;员工申诉、老板追责、我背锅……
→ 转折点:把招聘“批量筛选”思路搬到Zoom,用60行Python实现“自动入会+抓取与会者+生成CSV”,现可8秒导出完整名单,误差0人。
2. 代码核心价值解析
脚本共83行,核心流程20行内搞定,先睹为快:
# Zoom类:自动入会
def join(self):
self.driver.get("https://zoom.us/join")
# 1.填会议ID
ui.WebDriverWait(self.driver, 100).until(
EC.presence_of_element_located((By.XPATH, '//*[@id="join-confno"]'))
)
self.driver.find_element_by_xpath('//*[@id="join-confno"]').send_keys(self.meeting_personal_id)
# 2.点加入
self.driver.find_element_by_xpath('//*[@id="btnSubmit"]').click()
# 3.浏览器入会+输密码
...
# 4.等待密码页并输入
passcode = ui.WebDriverWait(self.driver, 300).until(
EC.presence_of_element_located((By.XPATH, '//*[@id="inputpasscode"]'))
)
passcode.send_keys(self.meeting_password)
# 5.最终加入
ui.WebDriverWait(self.driver, 300).until(
EC.element_to_be_clickable((By.XPATH, '//*[@id="joinBtn"]'))
).click()
# 抓名单:循环div直到找不到新人
def get_attendees_list(self):
ui.WebDriverWait(self.driver, 1000).until(
EC.presence_of_element_located((By.XPATH, '//*[@id="wc-container-left"]/div[3]/div/div[2]/div/div/div[1]/div'))
)
attendees, i = [], 1
while True:
try:
elem = self.driver.find_element_by_xpath(
f'//*[@id="wc-container-left"]/div[3]/div/div[2]/div/div/div[1]/div[{i}]/div'
)
attendees.append(elem.text)
i += 1
except NoSuchElementException:
break
# 写CSV带时间戳
with open("attended.csv", "w", encoding='utf-8-sig') as f:
f.write(datetime.now().isoformat(' ') + '\n')
f.write(','.join(attendees))
代码执行流程图
三维价值评估
- 时间收益:10分钟/次 → 8秒/次,年培训50次节省约500分钟
- 误差消除:避免“听不清名字”导致的人工漏记、错记
- 扩展潜力:改4行代码即可支持Teams、钉钉;加1行可自动上传HR系统
HR专业视角
“该脚本=组织行为学里的‘电子签到+行为数据留痕’:
- 自动入会 ≈ 统一入职流程
- 名单抓取 ≈ 实时考勤同步
- 时间戳记录 ≈ 绩效审计日志”
3. 关键技术解剖台
Selenium显式等待(WebDriverWait)
▍HR眼中的技术价值
对应“招聘流程”中的节点确认:只有当前步骤材料齐全,才触发下一步面试。
▍工程师的实现逻辑
ui.WebDriverWait(self.driver, 300).until(
EC.element_to_be_clickable((By.XPATH, '//*[@id="joinBtn"]'))
)
技术三棱镜
- 原理类比:多部门审批流,按钮可点击=审批人点了“同意”
- 参数黑盒:300秒=最大容忍时长,等同‘offer审批超时预警’
- 避坑指南:设太短→页面未加载完就点击→脚本崩溃;设太长→浪费运行时长
▍复杂度可视化
PySimpleGUI零成本交互
▍HR眼中的技术价值
相当于自助HR门户:让非技术同事也能“所见即所得”地填写会议信息。
▍核心代码
sg.Window('Zoom', layout, size=(600, 200))
- 原理类比:可视化表单≈员工自助录入个人信息
- 参数黑盒:size=(600,200) 相当于‘一页纸’简历,信息量刚好
- 避坑指南:窗口未加“置顶”→用户找不到程序;加
keep_on_top=True提升体验
4. 扩展应用场景
场景迁移实验室
案例1:培训签到 → 财务网银对账
# 把url换成企业网银
# find_element瞄准“昨日余额”字段
# attendees列表改为“借方、贷方”金额
▶️ 改造收益:每日自动抓取银行流水生成CSV,对账时间从30分钟→3秒
案例2:签到+情绪分析
# 会后自动切到Zoom聊天
# 抓取聊天内容→jieba分词→情感打分
# 存入Excel生成“员工情绪热力图”
▶️ 创新价值:HR实时洞察培训满意度,提前干预负面情绪
5. 总结
60行Python,把“复制会议ID→手动点名→Excel誊写”的重复流程压缩成8秒自动化;GUI封装让零基础同事也能一键运行。只要把XPATH和URL替换,同款思路即可迁移到Teams、钉钉、WebEx,甚至网银、电商后台,实现真正的“一脚本多场景”。
源码获取
完整代码已开源,包含详细的注释文档:
🔗 [GitCode仓库]:https://gitcode.***/laong-1024/python-automation-scripts
📥 [备用下载]:https://pan.quark.***/s/654cf649e5a6, 提取码:f5VG