一个用于自动填写北森性格测试题库的 Python 工具,支持多种题型和预设答案自动答题。已完全实现形容词三选二和单选题两种题型的自动化填写。
- 🚀 自动打开测试链接并完成整个答题流程
- 📝 根据预设答案自动答题,支持智能题目匹配
- 🎯 支持两种题型:形容词三选二、单选题
- ⚙️ 灵活的 JSON 配置文件,易于维护和修改
- 🔄 智能重试机制和多种点击方式
- 🎯 多种选择器支持,适应不同页面结构
- 📊 实时进度显示和详细调试信息
- 🛡️ 完善的错误处理和异常恢复
- 🔧 完全复用的按钮操作逻辑
- ⚡ 智能页面跳转检测,自动识别题目切换
- 🔄 优化的等待机制,确保页面完全加载
- 🎯 多题连续答题支持,自动处理整个测试流程
pip install -r requirements.txt形容词三选二题型:
cp answers_template.json answers.json
# 编辑 answers.json,配置测试URL和形容词排序
python adjective_test_automation.py单选题题型:
cp single_choice_answers_template.json single_choice_answers.json
# 编辑 single_choice_answers.json,配置测试URL和题目答案
python single_choice_main.py
**未匹配问题记录功能**:
程序运行结束后,会自动将所有未匹配到答案的问题记录到 `unmatched_questions.json` 文件中,包含:
- 问题文本
- 建议的默认答案
- 时间戳
- 分析说明
你可以根据这个文件来完善题库,将未匹配的问题添加到配置文件中。程序会自动完成从打开链接到答题结束的全过程!
- 复制
answers_template.json为answers.json配置文件 - 修改以下配置项:
{
"test_url": "你的北森测试链接",
"adjective_ranking": ["善解人意的", "有计划性的", "有领导意愿的"],
"settings": {
"wait_timeout": 10,
"page_load_timeout": 30,
"implicit_wait": 5
}
}test_url: 北森测试的完整链接adjective_ranking: 形容词优先级排序数组- 按优先级排序:第一位最符合,最后一位最不符合
- 例如:
["善解人意的", "有计划性的", "有领导意愿的"]
settings: 运行设置wait_timeout: 元素等待超时时间(秒)page_load_timeout: 页面加载超时时间(秒)implicit_wait: 隐式等待时间(秒)
- 复制
single_choice_answers_template.json为single_choice_answers.json配置文件 - 修改以下配置项:
{
"test_url": "你的北森测试链接",
"default_answer": "非常不符合",
"answer_categories": {
"非常符合": [
"我能够很好地处理压力",
"我善于与他人合作"
],
"比较符合": [
"当我感到心烦时,我能控制住自己不要发火",
"我通常能保持冷静"
],
"比较不符合": [
"我经常感到焦虑",
"我容易紧张"
],
"非常不符合": [
"我经常发脾气",
"我很难控制情绪"
]
},
"settings": {
"wait_timeout": 10,
"page_load_timeout": 30,
"implicit_wait": 5
}
}test_url: 北森测试的完整链接question_answers: 题目答案数组,包含题目文本和对应答案question_text: 题目文本内容(用于匹配)answer: 对应的答案选项- 支持的答案选项:
"非常不符合"、"比较不符合"、"比较符合"、"非常符合"
settings: 运行设置wait_timeout: 元素等待超时时间(秒)page_load_timeout: 页面加载超时时间(秒)implicit_wait: 隐式等待时间(秒)
程序会通过以下方式匹配题目:
- 自动识别题目文本:从页面中提取题目内容
- 智能匹配:在配置文件中查找包含该文本的题目配置
- 关键词匹配:即使题目文本不完全相同,也能通过关键词匹配
- 按顺序匹配:如果无法匹配,按题目顺序使用配置中的答案
- 默认答案:如果完全无法匹配,使用默认答案"非常不符合"
- 确保已安装 Chrome 浏览器
- 复制
answers_template.json为answers.json - 配置
answers.json文件中的测试链接和形容词排序 - 激活虚拟环境:
source venv/bin/activate - 运行程序:
python adjective_test_automation.py- 确保已安装 Chrome 浏览器
- 复制
single_choice_answers_template.json为single_choice_answers.json - 配置
single_choice_answers.json文件中的测试链接和答案 - 激活虚拟环境:
source venv/bin/activate - 运行程序:
python single_choice_automation.py北森性格测试会随机给出三个形容词,需要选择:
- 最符合:选择排序列表中的第一位
- 最不符合:选择排序列表中的最后一位
例如配置:
{
"adjective_ranking": ["善解人意的", "有计划性的", "有领导意愿的"]
}当页面出现这三个形容词时,程序会:
- 选择"善解人意的"作为最符合
- 选择"有领导意愿的"作为最不符合
FUCK_BEISEN/
├── adjective_automation.py # 形容词题型自动化脚本
├── single_choice_main.py # 单选题题型自动化脚本
├── button_handler.py # 按钮处理模块
├── adjective_answers_template.json # 形容词题型配置模板
├── single_choice_answers_template.json # 单选题题型配置模板
├── adjective_answers.json # 形容词题型配置文件(需要创建)
├── single_choice_answers.json # 单选题题型配置文件(需要创建)
├── unmatched_questions.json # 未匹配问题记录文件(自动生成)
└── README.md # 项目说明文档
- 测试链接:请确保测试链接有效且可访问
- 配置准确性:形容词配置需要与页面实际显示的形容词完全匹配
- 题目匹配:单选题的题目文本需要与配置文件中的文本匹配(支持部分匹配)
- 浏览器环境:确保已安装 Chrome 浏览器和对应的 ChromeDriver
- 网络环境:确保网络连接稳定,避免页面加载超时
- 使用条款:请遵守相关网站的使用条款,仅用于学习和研究
-
找不到元素:
- 检查页面是否完全加载
- 确认题目类型是否正确识别
- 查看调试输出中的选择器匹配结果
-
题目匹配失败:
- 检查配置文件中的题目文本是否与页面显示一致
- 程序会自动使用默认答案"非常不符合"
- 可以按题目顺序匹配配置中的答案
-
浏览器启动失败:
- 确保 Chrome 浏览器已安装
- 检查 ChromeDriver 版本是否与 Chrome 版本匹配
-
页面加载超时:
- 增加
wait_timeout或page_load_timeout设置 - 检查网络连接是否稳定
- 增加
-
无法进入答题区域:
- 程序会自动处理所有导航步骤
- 如果失败,检查测试链接是否正确
-
多题答题中断:
- 程序已优化页面跳转检测逻辑
- 自动识别点击确定按钮后的页面状态
- 智能判断是否需要额外点击"下一题"按钮
- 如果仍有问题,检查网络连接和页面加载速度
-
页面跳转检测失败:
- 程序会在点击确定按钮后等待页面响应
- 自动检测新题目的形容词元素
- 支持多种页面跳转模式(自动跳转/手动点击下一题)
- 增加了重试机制确保稳定性
-
未匹配问题过多:
- 检查
unmatched_questions.json文件 - 将未匹配的问题添加到配置文件中
- 考虑使用新的答案分类格式提高匹配效率
- 检查
程序运行时会输出详细的日志信息,包括:
- 找到的问题文本
- 匹配的答案
- 元素定位状态
- 错误信息
- 未匹配问题统计
- 页面跳转状态检测
- 题目切换进度信息
- 按钮查找和点击结果
- 等待和重试机制状态
多题答题日志示例:
第 1 题回答完成
等待页面响应...
等待页面跳转...
检查是否已进入第 2 题...
成功检测到第 2 题,继续答题
根据这些信息可以快速定位问题所在。程序结束后会生成未匹配问题报告,帮助完善题库。
- Selenium WebDriver: 浏览器自动化
- Chrome/Edge: 支持多种浏览器
- JSON: 配置文件格式
- Python: 主要开发语言
- 智能元素定位: 多种选择器策略
- 容错机制: 多重异常处理
- 配置驱动: JSON 格式易于维护
- 跨平台: 支持 Windows/Mac/Linux
- 智能页面跳转: 自动检测页面状态变化
- 优化等待机制: 动态调整等待时间
- 多题连续处理: 支持完整测试流程自动化
程序采用了智能的页面跳转检测机制:
- 状态检测: 点击确定按钮后自动检测页面状态
- 元素验证: 通过查找新题目的形容词元素确认页面跳转
- 智能重试: 如果检测失败,自动尝试点击"下一题"按钮
- 完成检测: 自动识别测试完成状态,避免无限循环
- 容错处理: 多重失败检测机制,确保程序稳定运行
MIT License - 详见 LICENSE 文件
本工具仅供学习和研究使用,请遵守相关网站的使用条款。使用者需自行承担使用风险。