gpt4 book ai didi

ui-automation - 白色/UI 自动化无法识别选项卡中的容器( Pane 控件)

转载 作者:行者123 更新时间:2023-12-02 03:32:54 25 4
gpt4 key购买 nike

我正在自动化 Windows 应用程序。我试图访问选项卡控件下的 Pane 元素(具有文本框、组合框控件),但它不可访问。白色返回 null。

我尝试了其他技术,例如 UI 自动化 TreeWalker(原始 View 、控制 View 、内容 View ),但没有任何帮助。

引用以下链接中的图片: https://dl.dropboxusercontent.com/u/68446125/Tab.png https://dl.dropboxusercontent.com/u/68446125/General%20Pane.png

如图 1 所示,White/UI Automation 正确检索了选项卡控件,但未返回子元素 General* Pane 并且它的控件不可访问(请参阅突出显示的图片 2),第一个可访问的子元素是“General * 选项卡项目”。

奇怪的是,这些控件可以在 Inspect.exe(在 Windows SDK 中)中访问。我尝试了以下方法来检索控件,但 General* Pane 永远无法通过 White/UI Automation 访问。

var tab = Window.Get<Tab>(SearchCriteria.ByControlType(ControlType.Tab).AndByClassName("TwoPageControl")); // Tab control is retrieved properly
var pane = tab.GetElement(SearchCriteria.ByControlType(ControlType.Pane).AndByText("General*")); // this line returns NULL

var pane1 = revWindow.GetElement(SearchCriteria.ByControlType(ControlType.Pane).AndByText("General*")); // this line returns NULL
var pane2 = revWindow.Get<Panel>(SearchCriteria.ByControlType(ControlType.Pane).AndByText("General*"));// throws exception "Failed to get ControlType=pane,Name=General*,ControlType=pane"

也尝试了 Windows UI 自动化代码,但没有成功。

 System.Windows.Automation.Condition cd1 = new AndCondition(
new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Tab),
new PropertyCondition(AutomationElement.ClassNameProperty, "TwoPageControl"));

AutomationElement a = window.FindFirst(TreeScope.Descendants, cd1); // Tab control is returned properly here

TreeWalker rawViewWalker = TreeWalker.RawViewWalker;
AutomationElement cc = rawViewWalker.GetFirstChild(a); // General * Pane is not returned, instead General* Tab item is returned, though it's not the first child.
var cd = rawViewWalker.GetNextSibling(cc); // this returns next pane element available, not General * Pane.

请帮助我如何访问 General * Pane 及其在选项卡控制下的子项。非常感谢任何帮助。

最佳答案

我的应用程序遇到了完全相同的问题。我使用 Inspect 和开源 UIAVerify,其中 Pane 元素作为 tab 元素的子元素可见。但是当我将 Verify 编译为 .Net 4.5 项目时,Pane 元素未被视为选项卡的一部分。它只有在我直接指向它时才会出现。我还在主窗口的后代中搜索我的 Pane 元素,但什么也没有。我认为这与动态创建该 Pane 内容有关(我的意思是当您选择不同的 tabItem 时会有不同的内容)。

我认为您无法从树的角度访问该元素。

我的解决方案是使用 AutomationElement.FromPoint 方法。 http://msdn.microsoft.com/en-us/library/system.windows.automation.automationelement.frompoint(v=vs.110).aspx

我还认为,如果您与开发程序的人员取得联系,这应该会有所帮助。 Some controls on a page are not visible for MS UI Automation

关于ui-automation - 白色/UI 自动化无法识别选项卡中的容器( Pane 控件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25617731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com