问题标签 [automationelement]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
silverlight - 通过 System.Windows.Automation 在 Chrome 中访问 Silverlight 窗口
这可能是徒劳的,但我想知道是否有人有这样做的经验。
我正在尝试使用System.Windows.Automation(例如AutomationElement )访问托管在Google Chrome中的Silverlight应用程序。
我遇到的问题是 Chrome 在子进程中托管 Silverlight 应用程序。如果我试图找到“Silverlight Control” AutomationElement(通过使用主进程的 hWnd),它会失败。
如果我找到 Silverlight 主机子进程,它没有窗口句柄,如果我尝试使用子进程的句柄查找控件,它会失败。
我知道它在那里......我可以使用Inspect看到它
但我只能通过单击Silverlight 应用程序并在 Inspect 中向上导航来找到它。我无法使用 AutomationElement.FindFirst 或 Inspect 从选项卡窗口向下导航。
就像在 IE 或 Firefox 中看不到的窗口和 Silverlight 插件之间存在断开连接,我不知道如何解决它。
有没有其他人能够做到这一点?
c# - 自动化元素写入
我正在进行测试以测试桌面应用程序。我使用来自微软 API 的自动化元素。我想写在文本框上。如何在使用自动化元素获得的文本框中写入内容?
我试图做一个通过应用程序导航的测试,但我想在有的文本框中写。
我已经有了文本框的自动化元素,但我不知道怎么写。
我能做什么?以及如何点击按钮?
谢谢
c# - 如何在 C# 中正确使用 AutomationElement
我想测试一个使用 Windows 窗体形成的 Windows 应用程序。我决定使用库 AutomationElements。
问题是我不知道如何正确使用它。
例如:如何在使用 AutomationElement 处理的文本框中写入内容?
代码如下:
我想在 loginUser 中写入用户。我该怎么做?
真的谢谢!
c# - UIAutomation AutomationElement 强制刷新 .current 和所有后代
我想刷新顶级自动化元素对象(桌面元素)及其所有后代的树结构。
我遇到的问题是我正在测试的一个特定程序以一种奇怪的方式丢弃和重建它的 GDI 对象,我知道我的自动化的某些部分会导致它重建它的树结构。我没有明确使用 .cache,而是使用 .current 来访问自动化元素值。我可以模仿 uispy 中的 GDI 结构更改,即使我在 uispy 中点击“刷新”,它也不足以获取新对象,但关闭并再次启动 uispy 可以解决此问题。我想在我的程序中模仿关闭+重新打开 uispy 的行为,以强制重建需要重建的任何数据结构。
目前,我最终得到的自动化元素不再引用他们的“新”孩子,或者他们的边界矩形有 0,0,0,0 等等。
另外,有人能准确地告诉我 uispy 'refresh' 命令以编程方式做什么吗?
.net - 包含对话框?
我试图确定一个特定的 ie 窗口(基于标题)是否有一个使用 Visual Studio 2010 中的窗口窗体打开的对话框(类似于 UISpy 的功能)。
我已经研究过使用 Windows 自动化库和 AutomationElement 类,但似乎无法准确指出如何完成任务。
c# - 带有“”(空字符串)名称值的 UIAutomation,不反映运行时的更改
我正在为其自动化一些测试的一个应用程序是初始化一个文本字段 (UIA_TextControlTypeId(0xC364)),开发人员将其设置为初始化为空白“”,以用于其内容和相应的名称。
在运行时,他们用几句话更新了这个文本字段,我无法在 inspect.exe 或我自己的 AutomationElement 对象中看到这个更新。除了 AutomationElement.Current.Name 或其变体之外,还有其他“getText”的方法吗?AutomaitonElement 上唯一可用的模式是“IsLegacyIAccessiblePatternAvailable”,甚至此模式也保持不变的空白名称和帮助属性。
这在 UIAutomation 的范围内是否不可能要求在对象中显示当前字符串?我是否应该要求开发人员添加另一个可以访问的控制模式?如果有,是哪一个?
理想情况下,我认为自动化应该对开发和设计过程产生最小的影响,但定义了 AutomationID 之类的东西除外——这种理念本身是否存在缺陷?
c# - 通过 AutomationElement 设置 DateTimePicker 元素
我希望能够DateTimePicker
通过AutomationElement
. 它将时间存储为“hh:mm:ss tt”(即晚上 10:45:56)。
我得到这样的元素:
ValuePattern p = AECollection[index].GetCurrentPattern(ValuePattern.Pattern) as ValuePattern;
我相信我有两个选择:
p.SetValue("9:41:22 AM");
或者
p.Current.Value = "9:41:22 AM";
但是,第一个选项根本不起作用(我在某处读到这可能在 .NET 2.0 中被破坏?我使用的是 .NET 3.0)。第二个选项告诉我该元素是只读的,如何更改状态使其不是只读的?或者更简单地说,我怎样才能改变时间:(?
ui-automation - AutomationElement.FromHandle() 执行时间间歇性变慢
我正在研究 UI 测试自动化,并注意到通常 AutomationElement.FromHandle 非常快,但有时需要 30 秒才能返回 AutomationElement。从我有限的日志记录来看,返回 AutomationElement 需要不到 100 毫秒或整整 30 秒。有没有其他人见过这种类型的问题?
我承认我没有对这个问题的可重复性做太多调查,所以我不知道被测应用程序中的控制类是否存在潜在的性能问题。
wpf - FindFirst 始终返回 null AutomationElement
我正在尝试使用 UI 自动化框架测试一些自定义控件。我的一个控件有一个 TextBox 基类,另一个继承自 Control。我可以通过测试找到我的第一个控件,但是无论我使用 TreeScope 和属性条件的哪种组合,我都无法在窗口中找到我的第二个自定义控件。
我在 XAML 中声明自定义控件,如下所示:
我有一个像下面这样的样本测试。
第二个断言总是返回 null 所以我什至无法开始对其运行测试。关于我可以做些什么来解决这个问题的任何建议?
c#-4.0 - AutomationElement 找不到行单元格值(但 UISpy 可以)
我正在尝试从具有 3 个列表 (SysListView32) 的窗口中获取数据。我对它们三个都做了同样的事情,UISpy 和 Inspect 都可以看到它们三个中的行和单元格,但是在代码中它们中的两个可以完美运行(Caption="List2" 和 Caption="List3"),但是第三个只包含白色的空字符串。
如果我尝试:
linea变为空字符串,gridPrizes 有 17 行 3 列,所有单元格都是空字符串。
如果我尝试:
我是0。为什么?
重要的是要注意,当使用 UISpy 时,它会发现一切。此外,我已经尝试在自动化上管理一个非托管版本,结果完全相同。
我正在使用 Windows Server 2008 R2。
这是一个屏幕截图:
先感谢您