Python Selenium网站自动附件上传问题:点击按钮自动填入文件路径
解决网站附件自动上传问题
你当前的核心问题是:直接给自定义上传按钮(sp-attachment-button组件内的button元素)发送文件路径无效。这类自定义按钮只是触发文件选择对话框的交互层,真正负责接收上传请求的是页面中隐藏的input[type="file"]元素。
解决思路
- 跳过点击自定义按钮的步骤,直接定位页面中的
input[type="file"]元素 - 对该元素调用
send_keys()传入文件路径,Selenium会自动触发上传流程,无需手动选择文件
修改后的代码示例
# Add Attachments try: if any(item == 'Financial Systems' for item in ACselection[:2]): # 定位关联的file input元素,需根据实际页面DOM结构调整XPATH file_input = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="catItemTop"]/div/div[3]/div/label/sp-attachment-button//input[@type="file"]'))) # 若元素处于隐藏状态,可通过JS强制设置可见(部分网站需要此步骤) # driver.execute_script("arguments[0].style.display = 'block';", file_input) # 直接传入文件路径触发上传 file_input.send_keys(filePath) except Exception as e: # 可选:添加异常打印便于调试 print(f"附件上传失败: {str(e)}")
注意事项
- 若找不到
input[type="file"]元素,打开浏览器开发者工具(F12),在上传按钮的父节点附近查找,或在弹出文件选择框时检查DOM变化 - 多数情况下,即使
input元素是隐藏状态,直接调用send_keys()依然有效;若无效,再执行JS修改元素样式使其可见
内容的提问来源于stack exchange,提问作者Billy
相关产品推荐
相关产品推荐

