UI自动化:“打开文件”对话框元素树并不包含所有元素

时间:2018-11-13 12:04:34

标签: c# ui-automation

我正在尝试将UI Automation与C#一起使用,以在打开的directpoly(x=seq(-10,10, length=5000000), rep(c(2,-1),20)) 对话框中键入文件路径,然后按“打开”按钮。我能够找到对话框本身,但是搜索内部元素(文件路径文本框和“打开”按钮)没有任何结果。当我遍历元素树并将元素写入日志文件时,我发现日志显然太短,并且并非所有元素都已打印出来。

奇怪的行为:如果我在另一个窗口上用鼠标切换,则遍历对话框将返回所有元素,并且我能够找到所需的控件并与之交互。

我尝试了许多方法来绕过该问题:

  • 打开一些窗口,使用Open切换到该窗口;
  • 使用Win API(AutomationElement.SetFocus)搜索元素;
  • 在对话框的边界矩形内,通过屏幕上的点,通过 x y 一步一步地获取FindWindowEx

没有一种方法能给我想要的结果。

使用UI Automation可以导致元素树不完整的原因是什么?

我的情况是:

  1. 测试点击网页上的按钮的次数
  2. 打开用于选择文件的标准Windows对话框
  3. 我正在尝试填充文件路径文本框,然后使用UI Automation按下“打开”按钮

1 个答案:

答案 0 :(得分:0)

我终于来到了这种解决方法:

  1. 打开对话框时将焦点放在文本框上,因此可以获取当前焦点所在的控件的句柄;
  2. 通过手柄获取AutomationElement
  3. 使用SendKeys.SendWait发送 Alt + O