基于 Playwright 浏览器自动化的学习通作业答题工具。
.sync() 同步到 textarea
npm install playwright
npm install playwright
npx playwright install chromium
node {baseDir}/scripts/auto_answer.js \
--url "https://mooc1.chaoxing.com/mooc-ans/mooc2/work/dowork?courseId=...&workId=..." \
--answers "D:/path/to/answers.json"
{
"single": ["B", "A", "C", "D"],
"judge": [1, 0, 1, 0],
"fill": ["视觉效果", "像素", "灰度值"],
"multi": [["A", "B"], ["B", "C", "D"]]
}
single:单选题答案,对应选项字母
judge:判断题答案,1=对,0=错
fill:填空题答案,每题一个字符串
multi:多选题答案,每题一个选项数组
saveWork() 暂存
超星泛雅模式作业页面的关键 DOM 结构:
div.answerBg[qid="405292246"][qtype="0"]
└── span.num_option[data="A"] ← 选项
div.answerBg
addChoice(this) 函数
cur_check 类
true/false
div.questionLi[id="question405292266"]
└── div.textDIV
└── textarea#answerEditor4052922661 ← 隐藏 textarea
└── iframe#answerEditor4052922661 ← UEditor iframe
div.answerBg 内,而在 div.questionLi 内
answerEditor{qid}{blankIndex}
UE.getEditor(id).setContent() + .sync() 填写
saveWork()
submitWork() / submitValidate()
#submitForm,action 指向 addStudentWorkNewWeb
默认:{workspace}/chaoxing_state.json(Playwright storageState 格式)
| 参数 | 说明 | 默认值 |
|------|------|--------|
| --url | 作业页面 URL | 必填 |
| --answers | 答案 JSON 文件路径 | 必填 |
| --state | Cookie 状态文件路径 | ./chaoxing_state.json |
| --headless | 无头模式 | false |
| --no-save | 不自动暂存 | false |
| --timeout | 操作超时(秒) | 600 |
A: 需要调用 UEditor 的 .sync() 方法同步内容到隐藏的 textarea,本 Skill 已内置此逻辑。
A: 不会。脚本会先检测每题的已答状态,已答的会跳过。
A: 脚本会自动检测,如跳转到登录页会弹出浏览器窗口让你登录,登录后自动继续。
A: 泛雅模式所有题目在一个页面,普通模式分页。本 Skill 主要针对泛雅模式(单页面)。
共 1 个版本