149 lines
7.6 KiB
Go
149 lines
7.6 KiB
Go
package uiaselector
|
|
|
|
const AllowedUseReadOnlyLocate = "read_only_locate"
|
|
|
|
type Selector struct {
|
|
ID string `json:"id"`
|
|
Description string `json:"description"`
|
|
AllowedUse string `json:"allowed_use"`
|
|
Required Criteria `json:"required"`
|
|
Preferred PreferredCriteria `json:"preferred"`
|
|
Fallback []FallbackCriteria `json:"fallback"`
|
|
StabilityScore int `json:"stability_score"`
|
|
Evidence Evidence `json:"evidence"`
|
|
}
|
|
|
|
type Criteria struct {
|
|
AutomationID string `json:"automation_id,omitempty"`
|
|
ControlType string `json:"control_type,omitempty"`
|
|
FrameworkID string `json:"framework_id,omitempty"`
|
|
ClassName string `json:"class_name,omitempty"`
|
|
ClassPrefix string `json:"class_name_prefix,omitempty"`
|
|
AncestorID string `json:"ancestor_selector,omitempty"`
|
|
}
|
|
|
|
type PreferredCriteria struct {
|
|
ClassName string `json:"class_name,omitempty"`
|
|
ClassPrefix string `json:"class_name_prefix,omitempty"`
|
|
PathHint string `json:"path_hint,omitempty"`
|
|
AncestorID string `json:"ancestor_selector,omitempty"`
|
|
}
|
|
|
|
type FallbackCriteria struct {
|
|
AncestorID string `json:"ancestor_selector,omitempty"`
|
|
ControlType string `json:"control_type,omitempty"`
|
|
ClassPrefix string `json:"class_name_prefix,omitempty"`
|
|
ChildAutomationIDContains []string `json:"child_automation_id_contains,omitempty"`
|
|
ChildControlTypeContains []string `json:"child_control_type_contains,omitempty"`
|
|
}
|
|
|
|
type Evidence struct {
|
|
CaptureID string `json:"capture_id"`
|
|
UIAPath string `json:"uia_path"`
|
|
}
|
|
|
|
func DefaultCatalog() []Selector {
|
|
return []Selector{
|
|
{
|
|
ID: "main_window",
|
|
Description: "iSphere / IMPlatformClient 主窗口",
|
|
AllowedUse: AllowedUseReadOnlyLocate,
|
|
Required: Criteria{AutomationID: "frmMain", ControlType: "Window", FrameworkID: "WinForm"},
|
|
Preferred: PreferredCriteria{ClassPrefix: "WindowsForms10.Window.8.app.0", PathHint: "root"},
|
|
Fallback: []FallbackCriteria{{ControlType: "Window", ClassPrefix: "WindowsForms10.Window.8.app.0", ChildAutomationIDContains: []string{"panelLeft", "ucPluginTabControl1"}}},
|
|
StabilityScore: 95,
|
|
Evidence: Evidence{CaptureID: "2026-07-08-internal-sandbox-a", UIAPath: "root"},
|
|
},
|
|
{
|
|
ID: "main_plugin_tab",
|
|
Description: "主功能 tab 容器",
|
|
AllowedUse: AllowedUseReadOnlyLocate,
|
|
Required: Criteria{AutomationID: "ucPluginTabControl1", ControlType: "Pane", FrameworkID: "WinForm"},
|
|
Preferred: PreferredCriteria{PathHint: "root/3", AncestorID: "main_window"},
|
|
Fallback: []FallbackCriteria{{AncestorID: "main_window", ControlType: "Pane", ChildAutomationIDContains: []string{"FrmHomePage", "ucTabPage"}}},
|
|
StabilityScore: 90,
|
|
Evidence: Evidence{CaptureID: "2026-07-08-internal-sandbox-a", UIAPath: "root/3"},
|
|
},
|
|
{
|
|
ID: "home_page_window",
|
|
Description: "首页内容窗口",
|
|
AllowedUse: AllowedUseReadOnlyLocate,
|
|
Required: Criteria{AutomationID: "FrmHomePage", ControlType: "Window", FrameworkID: "WinForm"},
|
|
Preferred: PreferredCriteria{PathHint: "root/3/0/0", AncestorID: "main_plugin_tab"},
|
|
Fallback: []FallbackCriteria{{AncestorID: "main_plugin_tab", ControlType: "Window", ClassPrefix: "WindowsForms10.Window.8.app.0"}},
|
|
StabilityScore: 82,
|
|
Evidence: Evidence{CaptureID: "2026-07-08-internal-sandbox-a", UIAPath: "root/3/0/0"},
|
|
},
|
|
{
|
|
ID: "tab_page_content",
|
|
Description: "tab 页内容窗口",
|
|
AllowedUse: AllowedUseReadOnlyLocate,
|
|
Required: Criteria{AutomationID: "FrmTabPageContent", ControlType: "Window", FrameworkID: "WinForm"},
|
|
Preferred: PreferredCriteria{PathHint: "root/3/1/0", AncestorID: "main_plugin_tab"},
|
|
Fallback: []FallbackCriteria{{AncestorID: "main_plugin_tab", ControlType: "Window", ChildControlTypeContains: []string{"TitleBar"}}},
|
|
StabilityScore: 82,
|
|
Evidence: Evidence{CaptureID: "2026-07-08-internal-sandbox-a", UIAPath: "root/3/1/0"},
|
|
},
|
|
{
|
|
ID: "left_panel",
|
|
Description: "左侧主面板",
|
|
AllowedUse: AllowedUseReadOnlyLocate,
|
|
Required: Criteria{AutomationID: "panelLeft", ControlType: "Pane", FrameworkID: "WinForm"},
|
|
Preferred: PreferredCriteria{PathHint: "root/4", AncestorID: "main_window"},
|
|
Fallback: []FallbackCriteria{{AncestorID: "main_window", ControlType: "Pane", ChildAutomationIDContains: []string{"ucPnlRoster1", "ucFuzzyQuery1"}}},
|
|
StabilityScore: 92,
|
|
Evidence: Evidence{CaptureID: "2026-07-08-internal-sandbox-a", UIAPath: "root/4"},
|
|
},
|
|
{
|
|
ID: "roster_panel",
|
|
Description: "组织/联系人容器外层",
|
|
AllowedUse: AllowedUseReadOnlyLocate,
|
|
Required: Criteria{AutomationID: "ucPnlRoster1", ControlType: "Pane", FrameworkID: "WinForm"},
|
|
Preferred: PreferredCriteria{PathHint: "root/4/0/0", AncestorID: "left_panel"},
|
|
Fallback: []FallbackCriteria{{AncestorID: "left_panel", ControlType: "Pane", ChildAutomationIDContains: []string{"ucRoster1"}}},
|
|
StabilityScore: 88,
|
|
Evidence: Evidence{CaptureID: "2026-07-08-internal-sandbox-a", UIAPath: "root/4/0/0"},
|
|
},
|
|
{
|
|
ID: "roster_view",
|
|
Description: "组织/联系人列表区域",
|
|
AllowedUse: AllowedUseReadOnlyLocate,
|
|
Required: Criteria{AutomationID: "ucRoster1", ControlType: "Pane", FrameworkID: "WinForm"},
|
|
Preferred: PreferredCriteria{PathHint: "root/4/0/0/0", AncestorID: "roster_panel"},
|
|
Fallback: []FallbackCriteria{{AncestorID: "roster_panel", ControlType: "Pane", ClassPrefix: "WindowsForms10.Window.8.app.0"}},
|
|
StabilityScore: 86,
|
|
Evidence: Evidence{CaptureID: "2026-07-08-internal-sandbox-a", UIAPath: "root/4/0/0/0"},
|
|
},
|
|
{
|
|
ID: "fuzzy_query_panel",
|
|
Description: "模糊搜索组件外层",
|
|
AllowedUse: AllowedUseReadOnlyLocate,
|
|
Required: Criteria{AutomationID: "ucFuzzyQuery1", ControlType: "Pane", FrameworkID: "WinForm"},
|
|
Preferred: PreferredCriteria{PathHint: "root/4/1/0", AncestorID: "left_panel"},
|
|
Fallback: []FallbackCriteria{{AncestorID: "left_panel", ControlType: "Pane", ChildAutomationIDContains: []string{"FrmFuzzyQuery"}}},
|
|
StabilityScore: 90,
|
|
Evidence: Evidence{CaptureID: "2026-07-08-internal-sandbox-a", UIAPath: "root/4/1/0"},
|
|
},
|
|
{
|
|
ID: "fuzzy_query_window",
|
|
Description: "模糊搜索内部窗口",
|
|
AllowedUse: AllowedUseReadOnlyLocate,
|
|
Required: Criteria{AutomationID: "FrmFuzzyQuery", ControlType: "Pane", FrameworkID: "WinForm"},
|
|
Preferred: PreferredCriteria{PathHint: "root/4/1/0/0", AncestorID: "fuzzy_query_panel"},
|
|
Fallback: []FallbackCriteria{{AncestorID: "fuzzy_query_panel", ControlType: "Pane", ChildAutomationIDContains: []string{"skinAlphaTxt"}}},
|
|
StabilityScore: 88,
|
|
Evidence: Evidence{CaptureID: "2026-07-08-internal-sandbox-a", UIAPath: "root/4/1/0/0"},
|
|
},
|
|
{
|
|
ID: "fuzzy_search_edit",
|
|
Description: "模糊搜索输入框",
|
|
AllowedUse: AllowedUseReadOnlyLocate,
|
|
Required: Criteria{AutomationID: "skinAlphaTxt", ControlType: "Edit", FrameworkID: "WinForm"},
|
|
Preferred: PreferredCriteria{ClassName: "WindowsForms10.EDIT.app.0.d3a00f_r29_ad1", PathHint: "root/4/1/0/0/2", AncestorID: "fuzzy_query_window"},
|
|
Fallback: []FallbackCriteria{{AncestorID: "fuzzy_query_window", ControlType: "Edit", ClassPrefix: "WindowsForms10.EDIT.app.0"}},
|
|
StabilityScore: 93,
|
|
Evidence: Evidence{CaptureID: "2026-07-08-internal-sandbox-a", UIAPath: "root/4/1/0/0/2"},
|
|
},
|
|
}
|
|
}
|