Skip to content

Repository files navigation

北森性格测试自动化工具

一个用于自动填写北森性格测试题库的 Python 工具,支持多种题型和预设答案自动答题。已完全实现形容词三选二和单选题两种题型的自动化填写。

功能特点

  • 🚀 自动打开测试链接并完成整个答题流程
  • 📝 根据预设答案自动答题,支持智能题目匹配
  • 🎯 支持两种题型:形容词三选二、单选题
  • ⚙️ 灵活的 JSON 配置文件,易于维护和修改
  • 🔄 智能重试机制和多种点击方式
  • 🎯 多种选择器支持,适应不同页面结构
  • 📊 实时进度显示和详细调试信息
  • 🛡️ 完善的错误处理和异常恢复
  • 🔧 完全复用的按钮操作逻辑
  • ⚡ 智能页面跳转检测,自动识别题目切换
  • 🔄 优化的等待机制,确保页面完全加载
  • 🎯 多题连续答题支持,自动处理整个测试流程

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 选择题型并配置

形容词三选二题型

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` 文件中,包含:
- 问题文本
- 建议的默认答案
- 时间戳
- 分析说明

你可以根据这个文件来完善题库,将未匹配的问题添加到配置文件中。

3. 运行程序

程序会自动完成从打开链接到答题结束的全过程!

配置说明

形容词三选二题型

  1. 复制 answers_template.jsonanswers.json 配置文件
  2. 修改以下配置项:
{
  "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: 隐式等待时间(秒)

单选题题型

  1. 复制 single_choice_answers_template.jsonsingle_choice_answers.json 配置文件
  2. 修改以下配置项:
{
  "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: 隐式等待时间(秒)

题目匹配机制

程序会通过以下方式匹配题目:

  1. 自动识别题目文本:从页面中提取题目内容
  2. 智能匹配:在配置文件中查找包含该文本的题目配置
  3. 关键词匹配:即使题目文本不完全相同,也能通过关键词匹配
  4. 按顺序匹配:如果无法匹配,按题目顺序使用配置中的答案
  5. 默认答案:如果完全无法匹配,使用默认答案"非常不符合"

使用方法

形容词三选二题型

  1. 确保已安装 Chrome 浏览器
  2. 复制 answers_template.jsonanswers.json
  3. 配置 answers.json 文件中的测试链接和形容词排序
  4. 激活虚拟环境:source venv/bin/activate
  5. 运行程序:
python adjective_test_automation.py

单选题题型

  1. 确保已安装 Chrome 浏览器
  2. 复制 single_choice_answers_template.jsonsingle_choice_answers.json
  3. 配置 single_choice_answers.json 文件中的测试链接和答案
  4. 激活虚拟环境:source venv/bin/activate
  5. 运行程序:
python single_choice_automation.py

形容词排序说明

北森性格测试会随机给出三个形容词,需要选择:

  • 最符合:选择排序列表中的第一位
  • 最不符合:选择排序列表中的最后一位

例如配置:

{
  "adjective_ranking": ["善解人意的", "有计划性的", "有领导意愿的"]
}

当页面出现这三个形容词时,程序会:

  1. 选择"善解人意的"作为最符合
  2. 选择"有领导意愿的"作为最不符合

项目结构

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                       # 项目说明文档

注意事项

  1. 测试链接:请确保测试链接有效且可访问
  2. 配置准确性:形容词配置需要与页面实际显示的形容词完全匹配
  3. 题目匹配:单选题的题目文本需要与配置文件中的文本匹配(支持部分匹配)
  4. 浏览器环境:确保已安装 Chrome 浏览器和对应的 ChromeDriver
  5. 网络环境:确保网络连接稳定,避免页面加载超时
  6. 使用条款:请遵守相关网站的使用条款,仅用于学习和研究

故障排除

常见问题

  1. 找不到元素

    • 检查页面是否完全加载
    • 确认题目类型是否正确识别
    • 查看调试输出中的选择器匹配结果
  2. 题目匹配失败

    • 检查配置文件中的题目文本是否与页面显示一致
    • 程序会自动使用默认答案"非常不符合"
    • 可以按题目顺序匹配配置中的答案
  3. 浏览器启动失败

    • 确保 Chrome 浏览器已安装
    • 检查 ChromeDriver 版本是否与 Chrome 版本匹配
  4. 页面加载超时

    • 增加 wait_timeoutpage_load_timeout 设置
    • 检查网络连接是否稳定
  5. 无法进入答题区域

    • 程序会自动处理所有导航步骤
    • 如果失败,检查测试链接是否正确
  6. 多题答题中断

    • 程序已优化页面跳转检测逻辑
    • 自动识别点击确定按钮后的页面状态
    • 智能判断是否需要额外点击"下一题"按钮
    • 如果仍有问题,检查网络连接和页面加载速度
  7. 页面跳转检测失败

    • 程序会在点击确定按钮后等待页面响应
    • 自动检测新题目的形容词元素
    • 支持多种页面跳转模式(自动跳转/手动点击下一题)
    • 增加了重试机制确保稳定性
  8. 未匹配问题过多

    • 检查 unmatched_questions.json 文件
    • 将未匹配的问题添加到配置文件中
    • 考虑使用新的答案分类格式提高匹配效率

调试信息

程序运行时会输出详细的日志信息,包括:

  • 找到的问题文本
  • 匹配的答案
  • 元素定位状态
  • 错误信息
  • 未匹配问题统计
  • 页面跳转状态检测
  • 题目切换进度信息
  • 按钮查找和点击结果
  • 等待和重试机制状态

多题答题日志示例

第 1 题回答完成
等待页面响应...
等待页面跳转...
检查是否已进入第 2 题...
成功检测到第 2 题,继续答题

根据这些信息可以快速定位问题所在。程序结束后会生成未匹配问题报告,帮助完善题库。

技术实现

核心技术栈

  • Selenium WebDriver: 浏览器自动化
  • Chrome/Edge: 支持多种浏览器
  • JSON: 配置文件格式
  • Python: 主要开发语言

关键特性

  • 智能元素定位: 多种选择器策略
  • 容错机制: 多重异常处理
  • 配置驱动: JSON 格式易于维护
  • 跨平台: 支持 Windows/Mac/Linux
  • 智能页面跳转: 自动检测页面状态变化
  • 优化等待机制: 动态调整等待时间
  • 多题连续处理: 支持完整测试流程自动化

页面跳转优化

程序采用了智能的页面跳转检测机制:

  1. 状态检测: 点击确定按钮后自动检测页面状态
  2. 元素验证: 通过查找新题目的形容词元素确认页面跳转
  3. 智能重试: 如果检测失败,自动尝试点击"下一题"按钮
  4. 完成检测: 自动识别测试完成状态,避免无限循环
  5. 容错处理: 多重失败检测机制,确保程序稳定运行

许可证

MIT License - 详见 LICENSE 文件

免责声明

本工具仅供学习和研究使用,请遵守相关网站的使用条款。使用者需自行承担使用风险。

About

自动化完成北森性格测试题库

Resources

Stars

13 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages