|
| 1 | +# 输入区域 |
1 | 2 | PROMPT_TEXTAREA_SELECTORS = [ |
2 | 3 | 'ms-prompt-box textarea[aria-label="Enter a prompt"]', |
3 | 4 | 'ms-prompt-box textarea[placeholder="Start typing a prompt"]', |
|
9 | 10 | INPUT_SELECTOR = PROMPT_TEXTAREA_SELECTOR |
10 | 11 | INPUT_SELECTOR2 = PROMPT_TEXTAREA_SELECTOR |
11 | 12 |
|
| 13 | +# 提交按钮 |
12 | 14 | SUBMIT_BUTTON_SELECTORS = [ |
13 | 15 | 'button[aria-label="Run"].run-button', |
14 | 16 | 'ms-run-button button[aria-label="Run"]', |
15 | 17 | 'ms-prompt-box ms-run-button button', |
16 | 18 | ] |
17 | 19 | SUBMIT_BUTTON_SELECTOR = SUBMIT_BUTTON_SELECTORS[0] |
18 | 20 |
|
| 21 | +# 文件上传 |
19 | 22 | INSERT_BUTTON_SELECTORS = [ |
20 | 23 | 'button[data-test-id="add-media-button"]', |
21 | 24 | 'button[aria-label="Insert images, videos, audio, or files"]', |
|
40 | 43 | HIDDEN_FILE_INPUT_SELECTOR = HIDDEN_FILE_INPUT_SELECTORS[0] |
41 | 44 |
|
42 | 45 | UPLOADED_MEDIA_ITEM_SELECTOR = 'ms-prompt-box .multi-media-row ms-media-chip' |
| 46 | + |
| 47 | +# 响应区域 |
43 | 48 | SKIP_PREFERENCE_VOTE_BUTTON_SELECTOR = 'button[data-test-id="skip-button"][aria-label="Skip preference vote"]' |
44 | 49 | RESPONSE_CONTAINER_SELECTOR = 'ms-chat-turn .chat-turn-container.model' |
45 | 50 | RESPONSE_TEXT_SELECTOR = 'ms-cmark-node.cmark-node' |
46 | 51 |
|
| 52 | +# 加载状态 |
47 | 53 | LOADING_SPINNER_SELECTORS = [ |
48 | 54 | 'button[aria-label="Run"].run-button svg .stoppable-spinner', |
49 | 55 | 'ms-run-button button svg .stoppable-spinner', |
50 | 56 | 'ms-prompt-box ms-run-button button svg .stoppable-spinner', |
51 | 57 | ] |
52 | 58 | LOADING_SPINNER_SELECTOR = LOADING_SPINNER_SELECTORS[0] |
53 | 59 |
|
| 60 | +# 对话框/遮罩层 |
54 | 61 | OVERLAY_SELECTOR = '.mat-mdc-dialog-inner-container' |
55 | 62 | ZERO_STATE_SELECTOR = 'ms-zero-state' |
56 | 63 | ERROR_TOAST_SELECTOR = 'div.toast.warning, div.toast.error' |
| 64 | + |
| 65 | +# 消息编辑 |
57 | 66 | EDIT_MESSAGE_BUTTON_SELECTOR = 'button[aria-label="Edit"].toggle-edit-button:has(span:text-is("edit"))' |
58 | 67 | MESSAGE_TEXTAREA_SELECTOR = 'ms-chat-turn:last-child ms-text-chunk ms-autosize-textarea' |
59 | 68 | FINISH_EDIT_BUTTON_SELECTOR = 'button[aria-label="Stop editing"].toggle-edit-button' |
60 | 69 | MORE_OPTIONS_BUTTON_SELECTOR = 'button[aria-label="Open options"]' |
61 | 70 | COPY_MARKDOWN_BUTTON_SELECTOR = 'button[role="menuitem"]:has-text("Copy markdown")' |
62 | 71 | COPY_MARKDOWN_BUTTON_SELECTOR_ALT = 'div[role="menu"] button:has-text("Copy Markdown")' |
| 72 | + |
| 73 | +# 高级设置 |
63 | 74 | ADVANCED_SETTINGS_EXPANDER_SELECTOR = 'button[aria-label="Expand or collapse advanced settings"]' |
64 | 75 | MAX_OUTPUT_TOKENS_SELECTOR = 'input[aria-label="Maximum output tokens"]' |
65 | 76 | STOP_SEQUENCE_INPUT_SELECTOR = 'input[aria-label="Add stop token"]' |
66 | 77 | MAT_CHIP_REMOVE_BUTTON_SELECTOR = 'mat-chip-set mat-chip-row button[aria-label*="Remove"]' |
67 | 78 | TOP_P_INPUT_SELECTOR = '//div[contains(@class, "settings-item-column") and .//h3[normalize-space()="Top P"]]//input[@type="number"]' |
68 | 79 | TEMPERATURE_INPUT_SELECTOR = '//div[contains(@class, "settings-item-column") and .//h3[normalize-space()="Temperature"]]//input[@type="number"]' |
| 80 | + |
| 81 | +# 工具面板 |
69 | 82 | USE_URL_CONTEXT_SELECTOR = 'button[aria-label="Browse the url context"]' |
| 83 | +GROUNDING_WITH_GOOGLE_SEARCH_TOGGLE_SELECTOR = 'div[data-test-id="searchAsAToolTooltip"] mat-slide-toggle button' |
| 84 | + |
| 85 | +# 思考模式 |
70 | 86 | THINKING_MODE_TOGGLE_SELECTOR = 'mat-slide-toggle[data-test-toggle="enable-thinking"]' |
71 | 87 | SET_THINKING_BUDGET_TOGGLE_SELECTOR = 'mat-slide-toggle[data-test-toggle="manual-budget"]' |
72 | 88 | THINKING_BUDGET_INPUT_SELECTOR = 'ms-slider[data-test-slider] input[type="number"]' |
73 | | -GROUNDING_WITH_GOOGLE_SEARCH_TOGGLE_SELECTOR = 'div[data-test-id="searchAsAToolTooltip"] mat-slide-toggle button' |
| 89 | +THINKING_LEVEL_SELECT_SELECTOR = 'mat-select[aria-label="Thinking Level"], mat-select[aria-label="Thinking level"]' |
| 90 | +THINKING_LEVEL_OPTIONS = { |
| 91 | + 'minimal': 'mat-option:has-text("Minimal")', |
| 92 | + 'low': 'mat-option:has-text("Low")', |
| 93 | + 'medium': 'mat-option:has-text("Medium")', |
| 94 | + 'high': 'mat-option:has-text("High")', |
| 95 | +} |
| 96 | +THINKING_LEVEL_OPTION_HIGH_SELECTOR = THINKING_LEVEL_OPTIONS['high'] |
| 97 | +THINKING_LEVEL_OPTION_LOW_SELECTOR = THINKING_LEVEL_OPTIONS['low'] |
| 98 | +DEFAULT_THINKING_LEVEL = "high" |
| 99 | + |
| 100 | +# 系统指令 |
74 | 101 | SYSTEM_INSTRUCTIONS_BUTTON_SELECTOR = 'button[aria-label="System instructions"]' |
75 | 102 | SYSTEM_INSTRUCTIONS_TEXTAREA_SELECTOR = 'textarea[aria-label="System instructions"]' |
| 103 | + |
| 104 | +# 模型选择器 |
76 | 105 | MODEL_SELECTOR_CARD_TITLE = '.model-selector-card .title' |
77 | 106 | MODEL_SELECTOR_CARD_NAME = '[data-test-id="model-name"]' |
78 | 107 | MODEL_SELECTOR_CARD_SUBTITLE = '.model-selector-card .subtitle' |
|
83 | 112 | MODEL_OPTION_CONTENT_SPAN = '.model-option-content span' |
84 | 113 | MODEL_SELECTORS_LIST = [MODEL_SELECTOR_CARD_TITLE, MODEL_SELECTOR_CARD_NAME, MODEL_SELECTOR_CARD_SUBTITLE, MODEL_SELECTOR_LEGACY_PRIMARY, MODEL_SELECTOR_LEGACY_FALLBACK, MODEL_SELECTOR_LEGACY_GENERIC, '.model-selector span', MODEL_SELECTOR_BUTTON_SPAN, MODEL_OPTION_CONTENT_SPAN] |
85 | 114 |
|
86 | | -THINKING_LEVEL_SELECT_SELECTOR = 'mat-select[aria-label="Thinking Level"], mat-select[aria-label="Thinking level"]' |
87 | | -THINKING_LEVEL_OPTIONS = { |
88 | | - 'minimal': 'mat-option:has-text("Minimal")', |
89 | | - 'low': 'mat-option:has-text("Low")', |
90 | | - 'medium': 'mat-option:has-text("Medium")', |
91 | | - 'high': 'mat-option:has-text("High")', |
92 | | -} |
93 | | -THINKING_LEVEL_OPTION_HIGH_SELECTOR = THINKING_LEVEL_OPTIONS['high'] |
94 | | -THINKING_LEVEL_OPTION_LOW_SELECTOR = THINKING_LEVEL_OPTIONS['low'] |
95 | | -DEFAULT_THINKING_LEVEL = "high" |
96 | | - |
| 115 | +# 速率限制 |
97 | 116 | RATE_LIMIT_CALLOUT_SELECTOR = 'ms-callout.error-callout .message, ms-callout.warning-callout .message' |
98 | 117 | RATE_LIMIT_KEYWORDS = ["exceeded quota", "out of free generations"] |
99 | 118 |
|
100 | | - |
| 119 | +# Function Calling (尚未使用,改为合并到system prompt) |
| 120 | +FUNCTION_CALLING_TOGGLE_SELECTOR = 'div[data-test-id="functionCallingTooltip"] mat-slide-toggle' |
| 121 | +EDIT_FUNCTION_DECLARATIONS_BUTTON_SELECTOR = 'button.edit-function-declarations-button' |
| 122 | +FUNCTION_DECLARATIONS_DIALOG_SELECTOR = 'ms-edit-function-declarations-dialog' |
| 123 | +FUNCTION_DECLARATIONS_DIALOG_CLOSE_BUTTON_SELECTOR = 'ms-edit-function-declarations-dialog h2 button[aria-label="close"]' |
| 124 | +FUNCTION_DECLARATIONS_CODE_EDITOR_TAB_SELECTOR = 'ms-edit-function-declarations-dialog button[role="tab"]:has-text("Code Editor")' |
| 125 | +FUNCTION_DECLARATIONS_TEXTAREA_SELECTOR = 'ms-edit-function-declarations-dialog ms-text-editor textarea' |
| 126 | +FUNCTION_DECLARATIONS_SAVE_BUTTON_SELECTOR = 'ms-edit-function-declarations-dialog mat-dialog-actions button:has-text("Save")' |
0 commit comments