gpt4 book ai didi

c# - 在 TestStack.White 中为 CustomUIItem 的子级获取 IUIItem[]

转载 作者:行者123 更新时间:2023-11-30 21:43:14 29 4
gpt4 key购买 nike

WPF 应用程序正在使用应用程序框架,我无法编辑它们。

我可以按照以下方式访问 GUI 中的每个元素:

IUIItem[] items = window.GetMultiple(SearchCriteria.All);
foreach (var item in items)
{
visit((dynamic)item);
}

我对普通控件没有问题,但我用 CustomUIItem 碰壁了。

我想访问它的所有子项,但无法从它们创建新数组 IUIItem[]

这是我现在拥有的:

    void visit(CustomUIItem item)
{
AutomationElementCollection children =
item
.AutomationElement
.FindAll(TreeScope.Children, Condition.TrueCondition);
UIItemCollection temp = new UIItemCollection(children.Cast<AutomationElement>());
foreach(var t in temp)
{
visit((dynamic)t);
}
}

有时这会抛出并且大多数时候集合仍然是空的。

CusomControl 在其子项中具有“正常”控件。我希望将它们作为常规 IUIItem

我在哪里可以找到这方面的文档。我唯一找到的是 this ,我不能这样做,因为我只是从外部访问,我不知道控件内容。

最佳答案

如果我真的理解了你的问题。

    IUIItem[] items = window.GetMultiple(SearchCriteria.All);
foreach (var item in items)
{
visit(item);
}

我已经更新了您的 visit() 方法,它现在需要一个 IUItem 作为参数以允许访问普通和自定义控件。

    public void visit(IUIItem item)
{
if (item is CustomUIItem)
{
// Process custom controls
CustomUIItem customControl = item as CustomUIItem;

// Retrieve all the child controls
IUIItem[] items = customControl.AsContainer().GetMultiple(SearchCriteria.All);

// visit all the children
foreach (var t in items)
{
visit(t);
}
...
}
else
{
// Process normal controls
...
}
}

关于c# - 在 TestStack.White 中为 CustomUIItem 的子级获取 IUIItem[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41881079/

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