容器選取 + 檢視切換(Selection / MultipleView)
select_control_item``(SelectionItemPattern)選取*單一*項目;容器層級的 ``SelectionPattern
回答自然的後續問題——listbox / grid / tab 中**目前選了什麼**,以及**是否可多選?**——這正是選取
之後的斷言目標。MultipleViewPattern 在控制項的各檢視之間切換(檔案總管的清單 / 詳細資料 /
並排 / 縮圖),這是個常見前置條件,否則就得靠脆弱的選單點擊。
get_selection()——{items, can_select_multiple, is_required},list_views()——{current, views: [...]},set_view()——切換到具名的檢視。
每個都是對可注入的 accessibility.backends.get_backend() 接縫的薄分派——可透過注入 fake
backend 進行無頭測試;真正的 UIA 呼叫位於 Windows 後端。不匯入 PySide6。
無頭 API
from je_auto_control import get_selection, list_views, set_view
get_selection(name="File List")
# {"items": ["report.pdf", "notes.txt"], "can_select_multiple": True,
# "is_required": False}
list_views(name="File List")
# {"current": "Details", "views": ["List", "Details", "Tiles"]}
set_view("Tiles", name="File List") # 切換檢視
控制項以 name / role / app_name / automation_id 定位(與其他原生控制動作相同)。
get_selection / list_views 回傳其字典(找不到控制項或模式則為 None);``set_view``
回傳 ``bool``(具名檢視不支援時為 False)。
執行器指令
AC_get_selection``(``{found, selection})、AC_list_views``(``{found, views})與
AC_set_view``(``view)。皆以對應的 ac_* MCP 工具(讀取類為唯讀、set_view 為破壞性)
及 Script Builder 指令(位於 Native UI 分類下)形式提供。