from typing import Any
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys


def 键盘单击(driver: Any, 按键: str) -> bool:
    """
    向当前页面发送一次键盘按键事件。

    本函数用于 Selenium 浏览器自动化操作中模拟用户键盘输入行为，
    例如在输入账号密码后通过按下 Enter 键直接提交表单，而无需
    再定位并点击“登录 / 下一步 / 确认”等按钮。

    函数内部通过 Selenium 的 ActionChains 发送键盘事件，
    若执行成功返回 True，发生任何异常返回 False。

    Args:
        driver (Any):
            Selenium WebDriver 浏览器驱动对象。

        按键 (str):
            要按下的键盘名称，例如：
            - "ENTER"
            - "TAB"
            - "ESCAPE"
            - "SPACE"
            - "ARROW_DOWN"
            - "ARROW_UP"

            注意：键名必须与 selenium.webdriver.common.keys.Keys
            中的常量名称一致。

    Returns:
        bool:
            True  表示按键发送成功。
            False 表示执行失败或参数错误。

    Example:
        键盘单击(driver, "ENTER")   # 提交登录表单
        键盘单击(driver, "TAB")     # 切换输入框
        键盘单击(driver, "ESCAPE")  # 关闭弹窗
    """
    try:
        if not 按键 or not isinstance(按键, str):
            return False

        key = getattr(Keys, 按键.upper(), None)
        if key is None:
            return False

        ActionChains(driver).send_keys(key).perform()
        return True

    except Exception:
        return False