我正在使用Microsoft UI自动化+ White框架。是否可以从顶级父级获取完整路径到控件,然后使用它来查找元素?例如,使用UI间谍获取完整路径,然后通过采取的路径以某种方式获得控制?
由于
答案 0 :(得分:0)
我使用非托管版本的MSUIA并且不使用白色,但是这样的事情应该按照你的要求进行。传递元素。
CUIAutomation auto = new CUIAutomation();
var desktop = auto.GetRootElement();
var walker = GetRawTreeWalker();
while (true)
{
element = walker.GetParentElement(element);
if (auto.CompareElements(desktop, element) == 1)
{
break;
}
winPath = AppendWinPathPart(winPath, element);
}
AppendWinPathPart是对一个方法的调用,该方法构建类似于我在自动化中使用的字符串形式的路径。它与MSUIA的XPath非常相似。
答案 1 :(得分:0)
我过去做过类似于你想要做的事情。不幸的是,它并不一定容易做到。
我基本上构建了自己的UI Spy简化版,它使用了类似于上面@chrismead的答案中的代码来构建自动化ID的'\'分隔路径(遗憾的是,正如您可能已经发现的那样,AutomationIDs可以是不可靠的,所以为了健壮,我还必须添加通过名称,兄弟姐妹之间的位置或相对于父母的位置来识别AutomationElements的能力。
然后,我在另一个应用程序中有代码,可以将这些路径作为输入,以便找到那些特定的AutomationElements并与它们进行交互。