MCPcopy Create free account
hub / github.com/CJackHwang/AIstudioProxyAPI / get_response_via_edit_button

Function get_response_via_edit_button

browser_utils/operations.py:801–968  ·  view source on GitHub ↗

Get response via edit button

(
    page: AsyncPage, req_id: str, check_client_disconnected: Callable
)

Source from the content-addressed store, hash-verified

799
800
801async def get_response_via_edit_button(
802 page: AsyncPage, req_id: str, check_client_disconnected: Callable
803) -> Optional[str]:
804 """Get response via edit button"""
805 logger.info(f"[{req_id}] (Helper) Attempting to get response via edit button...")
806 last_message_container = page.locator("ms-chat-turn").last
807 edit_button = last_message_container.get_by_label("Edit")
808 finish_edit_button = last_message_container.get_by_label("Stop editing")
809 autosize_textarea_locator = last_message_container.locator("ms-autosize-textarea")
810 actual_textarea_locator = autosize_textarea_locator.locator("textarea")
811
812 try:
813 logger.info(
814 f"[{req_id}] - Attempting to hover last message to show 'Edit' button..."
815 )
816 try:
817 # Perform hover on message container
818 await last_message_container.hover(timeout=CLICK_TIMEOUT_MS / 2)
819 await asyncio.sleep(0.3) # Wait for hover effect
820 check_client_disconnected("Edit Response - after hover: ")
821 except (ClientDisconnectedError, asyncio.CancelledError):
822 raise
823 except Exception as hover_err:
824 logger.warning(
825 f"[{req_id}] - (get_response_via_edit_button) Hover last message failed (ignoring): {type(hover_err).__name__}"
826 )
827
828 logger.info(f"[{req_id}] - Locating and clicking 'Edit' button...")
829 try:
830 from playwright.async_api import expect as expect_async
831
832 await expect_async(edit_button).to_be_visible(timeout=CLICK_TIMEOUT_MS)
833 check_client_disconnected("Edit Response - 'Edit' button visible after: ")
834 await edit_button.click(timeout=CLICK_TIMEOUT_MS)
835 logger.info(f"[{req_id}] - 'Edit' button clicked.")
836 except (ClientDisconnectedError, asyncio.CancelledError):
837 raise
838 except Exception as edit_btn_err:
839 logger.error(
840 f"[{req_id}] - 'Edit' button not visible or click failed: {edit_btn_err}"
841 )
842 await save_error_snapshot(f"edit_response_edit_button_failed_{req_id}")
843 return None
844
845 check_client_disconnected("Edit Response - after clicking 'Edit' button: ")
846 await asyncio.sleep(0.3)
847 check_client_disconnected(
848 "Edit Response - after delay following 'Edit' button click: "
849 )
850
851 logger.info(f"[{req_id}] - Getting content from textarea...")
852 response_content = None
853 textarea_failed = False
854
855 try:
856 await expect_async(autosize_textarea_locator).to_be_visible(
857 timeout=CLICK_TIMEOUT_MS
858 )

Calls 5

infoMethod · 0.80
warningMethod · 0.80
errorMethod · 0.80
save_error_snapshotFunction · 0.70