// 1. 定义主要执行函数
async function executeFullProcess() {
try {
// 2. 点击左侧所有按钮
const leftButtons = document.querySelectorAll('.pa-button-answer');
console.log(`找到 ${leftButtons.length} 个左侧按钮,开始依次点击...`);
for (let i = 0; i < leftButtons.length; i++) {
const button = leftButtons[i];
console.log(`点击按钮 ${i + 1}/${leftButtons.length} (e_id: ${button.getAttribute('e_id')})`);
// 模拟真实点击事件
const clickEvent = new MouseEvent('click', {
bubbles: true,
cancelable: true,
view: window
});
button.dispatchEvent(clickEvent);
// 等待右侧内容刷新(2秒)
await wait(2000);
// 检查右侧内容是否更新
const questionGroups = document.querySelectorAll('.question');
console.log(`点击后检测到 ${questionGroups.length} 个问题组`);
await executeAnsweringProcess();
// 等待页面内容刷新(2秒)
await wait(2000);
}
console.log('所有左侧按钮点击完成');
} catch (error) {
console.error('执行过程中出错:', error);
}
}
// 4. 定义自动回答函数
async function executeAnsweringProcess() {
// 为每个问题随机选择答案
const questionGroups = document.querySelectorAll('.question');
console.log(`开始回答 ${questionGroups.length} 个问题`);
questionGroups.forEach(group => {
const radios = group.querySelectorAll('input[type="radio"]');
const randomNum = Math.floor(Math.random() * 101);
const targetOption = randomNum > 95 ? 'b_ややそう思う' : 'a_そう思う';
console.log(`问题 ${group.id} 随机数: ${randomNum} > 选择: ${targetOption}`);
radios.forEach(radio => {
const label = document.querySelector(`label[for="${radio.id}"]`);
if (label && (label.textContent.trim() === targetOption || label.textContent.trim() === 'c_1時間程度')) {
radio.checked = true;
const changeEvent = new Event('change', { bubbles: true });
radio.dispatchEvent(changeEvent);
}
});
});
// 等待500ms确保选择生效
await wait(500);
// 5. 提交表单
let submitButton = document.querySelector('button[type="submit"][id="submit"]');
if (!submitButton) {
submitButton = document.querySelector('input[type="submit"], button[type="submit"]') ||
document.querySelector('#submitBtn, .submit-button, [name="submit"]');
}
if (!submitButton) {
const buttons = document.querySelectorAll('button, input[type="button"]');
buttons.forEach(btn => {
if ((btn.value && btn.value.includes('提交')) ||
(btn.textContent && btn.textContent.includes('提交'))) {
submitButton = btn;
}
});
}
if (submitButton) {
console.log('找到提交按钮,开始提交');
const clickEvent = new MouseEvent('click', {
bubbles: true,
cancelable: true,
view: window
});
submitButton.dispatchEvent(clickEvent);
// 6. 处理确认模态框
await wait(1000);
const confirmCheckbox = document.getElementById('confirm-agree');
if (confirmCheckbox) {
console.log('找到确认复选框,开始选中');
confirmCheckbox.checked = true;
const changeEvent = new Event('change', { bubbles: true });
confirmCheckbox.dispatchEvent(changeEvent);
// 等待500ms确保复选框状态更新
await wait(500);
const okButton = document.getElementById('pa-btn-confirm-ok');
if (okButton) {
console.log('找到OK按钮,开始点击');
// 确保按钮已启用
if (okButton.classList.contains('disabled')) {
okButton.classList.remove('disabled');
}
okButton.disabled = false;
const okClickEvent = new MouseEvent('click', {
bubbles: true,
cancelable: true,
view: window
});
okButton.dispatchEvent(okClickEvent);
} else {
console.error('未找到OK按钮');
}
} else {
console.error('未找到确认复选框');
}
} else {
console.error('未找到提交按钮');
}
}
// 7. 辅助函数:等待指定时间
function wait(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// 8. 启动整个过程
executeFullProcess();