yiyan-browser-agent 1.7.7 → 1.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/browser.js +3 -74
package/package.json
CHANGED
package/src/browser.js
CHANGED
|
@@ -472,84 +472,13 @@ class YiyanBrowser {
|
|
|
472
472
|
return result.trim();
|
|
473
473
|
}
|
|
474
474
|
|
|
475
|
-
// ──
|
|
475
|
+
// ── 仅从 answer_text_id 提取内容,不使用任何 fallback ──
|
|
476
476
|
const answerEl = document.querySelector('#answer_text_id');
|
|
477
477
|
if (answerEl) {
|
|
478
|
-
|
|
479
|
-
if (t.length > 0) return t;
|
|
478
|
+
return getFullText(answerEl);
|
|
480
479
|
}
|
|
481
480
|
|
|
482
|
-
//
|
|
483
|
-
const backupSelectors = [
|
|
484
|
-
'[class*="answer"]',
|
|
485
|
-
'[class*="response"]',
|
|
486
|
-
'[class*="message"][class*="content"]',
|
|
487
|
-
'.ds-markdown',
|
|
488
|
-
'[class*="assistant"] [class*="markdown"]',
|
|
489
|
-
'[class*="assistant"] [class*="content"]',
|
|
490
|
-
'[data-role="assistant"] [class*="content"]',
|
|
491
|
-
'[class*="ai-message"] [class*="content"]',
|
|
492
|
-
'[class*="bot-message"] [class*="content"]',
|
|
493
|
-
'[class*="response-content"]',
|
|
494
|
-
'[class*="message-content"]:last-child',
|
|
495
|
-
];
|
|
496
|
-
|
|
497
|
-
for (const sel of backupSelectors) {
|
|
498
|
-
try {
|
|
499
|
-
const els = document.querySelectorAll(sel);
|
|
500
|
-
if (els.length > 0) {
|
|
501
|
-
const t = getFullText(els[els.length - 1]);
|
|
502
|
-
if (t.length > 5) return t;
|
|
503
|
-
}
|
|
504
|
-
} catch {}
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
try {
|
|
508
|
-
const markdownEls = document.querySelectorAll(
|
|
509
|
-
'[class*="markdown"], [class*="prose"], [class*="rendered"], [class*="content"]'
|
|
510
|
-
);
|
|
511
|
-
if (markdownEls.length > 0) {
|
|
512
|
-
const t = getFullText(markdownEls[markdownEls.length - 1]);
|
|
513
|
-
if (t.length > 10) return t;
|
|
514
|
-
}
|
|
515
|
-
} catch {}
|
|
516
|
-
|
|
517
|
-
try {
|
|
518
|
-
const allBlocks = Array.from(
|
|
519
|
-
document.querySelectorAll('[class*="message"], [class*="chat-item"], [class*="turn"], [class*="answer"], [class*="content"]')
|
|
520
|
-
);
|
|
521
|
-
const candidates = allBlocks.filter(el => {
|
|
522
|
-
const cls = el.className || '';
|
|
523
|
-
const id = el.id || '';
|
|
524
|
-
return (
|
|
525
|
-
!cls.toLowerCase().includes('input') &&
|
|
526
|
-
!cls.toLowerCase().includes('user') &&
|
|
527
|
-
!cls.toLowerCase().includes('editable') &&
|
|
528
|
-
!id.toLowerCase().includes('input') &&
|
|
529
|
-
!el.querySelector('textarea, input[type="text"], [contenteditable="true"]') &&
|
|
530
|
-
(el.innerText || '').length > 20
|
|
531
|
-
);
|
|
532
|
-
});
|
|
533
|
-
|
|
534
|
-
if (candidates.length > 0) {
|
|
535
|
-
return getFullText(candidates[candidates.length - 1]);
|
|
536
|
-
}
|
|
537
|
-
} catch {}
|
|
538
|
-
|
|
539
|
-
try {
|
|
540
|
-
const allDivs = Array.from(document.querySelectorAll('div, section'));
|
|
541
|
-
const textBlocks = allDivs.filter(el => {
|
|
542
|
-
const text = el.innerText || '';
|
|
543
|
-
const cls = el.className || '';
|
|
544
|
-
if (cls.includes('input') || cls.includes('editable') || cls.includes('user')) return false;
|
|
545
|
-
return text.length > 50 && !el.querySelector('textarea, [contenteditable]');
|
|
546
|
-
});
|
|
547
|
-
if (textBlocks.length > 0) {
|
|
548
|
-
textBlocks.sort((a, b) => (b.innerText || '').length - (a.innerText || '').length);
|
|
549
|
-
return getFullText(textBlocks[0]);
|
|
550
|
-
}
|
|
551
|
-
} catch {}
|
|
552
|
-
|
|
481
|
+
// answer_text_id 不存在,返回空字符串
|
|
553
482
|
return '';
|
|
554
483
|
});
|
|
555
484
|
}
|