问题标签 [uia]

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.

0 投票
1 回答
779 浏览

ui-automation - 我们可以使用 Microsoft UIAutomation 库“单击”编辑框吗

在我的应用程序中,我们有一个 webbrowserpageviewer 控件。打开网页时,用户需要点击网页上的一些编辑框。我们正在尝试使用 UI 自动化库来模拟这种行为。对此有点新,但我看到我们可以使用 InvokePattern 模拟按钮点击,那么有没有类似的方法来模拟编辑框点击?

0 投票
1 回答
526 浏览

session-0-isolation - 会话 0 上的 UI 自动化

我正在尝试使用 UIA 来自动化应用程序。在测试阶段,我使用 psexec 在远程服务器上运行应用程序并在会话 0 中启动它,因为这是唯一保证可用的会话。

这样做时,在切换到会话 0 桌面(来自交互式服务检测消息)之前,我无法自动化应用程序的某些子项。

我添加了一些使用 TreeWalker 遍历应用程序的整个树的代码,我看到在不可见会话 0 中仅创建一些子项,而在交互式桌面(会话 0 或其他)中创建所有子项。

找不到有关此问题的任何文档。

有什么建议么?

0 投票
2 回答
406 浏览

ui-automation - UIA 验证无法识别 System.Windows.Forms.ListView 复选框

我对 UI 自动化和 UI 验证工具很陌生。

在我们的应用程序中,我们使用 System.Windows.Forms.ListView 并将 CheckBoxes 属性设置为 true。

CheckBoxes 属性允许您在列表中的每个项目旁边显示一个复选框。这使您的应用程序能够显示项目列表(如果 View 属性设置为 View.Details,则显示子项目)

到目前为止,单个行和每行中的所有值都已被识别。UI 验证仅识别复选框。


命名空间 WindowsFormsApplication1 { public 部分类 Form1 : Form { public Form1() { InitializeComponent()

}

输出:“1”和“pass”这两个值都被 UIA 验证识别。但是无法识别该复选框。


有没有其他人经历过类似的行为?如果是这样,有什么解决办法吗?

非常感谢所有的帮助。

问候 Hari Hara

0 投票
1 回答
97 浏览

ruby - 如何为 dragFromToForDuration 方法使用的坐标引用变量

我有一个简单的例程,可以通过在屏幕上向左滑动来删除许多记录。它只删除某种状态的记录,即准备提交。最高记录可能不一定处于那种状态,所以我不能使用固定的 y 坐标。相反,我使用在该状态下找到的第一条记录的 y 坐标。

这是我要执行的代码:

问题是变量 y 似乎在所有这些引号中都无法访问。该方法成功,但 UI 未按预期响应。我在控制台中尝试了该方法。当我将变量替换为整数时,它按预期工作,但变量没有。我试着让它成为一个没有区别的全局变量。我尝试使用点击命令来点击按钮,但再次无声地失败。

有没有办法以这种方式引用此方法中的变量?

0 投票
1 回答
488 浏览

c# - 单元测试 WPF 控件获取对子对话框的访问权限

我们正在使用 NUnit 来测试 WPF 控件。文本夹具基本上会打开一个测试窗口,其中包含要在新线程上测试的控件。然后使用 Microsoft UI 自动化 (UIA) 与控件进行交互。

新线程显示窗口并启动调度程序。事情按预期工作。

我们遇到的问题是这个控件可以启动一个对话框。对话框启动后,我们需要与之交互并关闭它。我无法获得对此对话框的引用来完成此任务。

一种不起作用的解决方案是使用 Application.Current.Windows 来获取所有窗口,然后遍历它们直到找到对话框。这不起作用,因为在单元测试期间 Application.Current = null。现在,如果我们只关心这个测试,我们就可以实例化一个应用程序。然而,这会干扰其他测试,因为当我们的应用程序变量超出范围时(在测试结束时),应用程序将自动进入关闭模式。结果,其他测试将失败(最明显的是因为 InitializeComponent 通常调用 System.Windows.Application.LoadComponent 在关机模式下无法调用)。

我想我们需要的是 Application.Current.Windows 的替代品。

0 投票
1 回答
1352 浏览

com - Microsoft UIAutomation 中是否有任何内部超时?

我正在使用UI 自动化 COM-to-.NET 适配器来读取目标 Google Chrome 浏览器的内容,该浏览器在 Windows 7 上播放 FLASH 内容。它可以工作。

我成功获得了内容和元素。一段时间内一切正常,但几个小时后,这些元素变得无法访问。

(AutomationElement).FindAll()返回0个孩子。

UIAutomation 是否有任何内部未记录的超时?

根据这个IUIAutomation2 接口 有 2 个超时,但它们不能从 IUIAutomation 接口访问。IUIAutomation2 仅在 Windows 8 上受支持(仅限桌面应用程序)。

所以我相信有一些超时。我做了一个解决方法,从桌面树的开头重新开始搜索和监视元素,但元素仍然不可用。一段时间后(不确定多少)这些元素再次可用。我的要求是尽可能快地读取这些值,但这种行为会对整个架构造成损害。我在某处读到有 3 分钟的超时,但不确定。

如果超时,是否可以更改它?是否可以重新启动某些东西或释放/处置某些东西?我在 MSDN 上找不到任何东西。

有谁知道发生了什么以及如何解决?

0 投票
1 回答
660 浏览

c# - Windows UI 自动化:添加事件处理程序时的线程阻塞

我正在编写一个 C# 程序,它通过 Com 互操作使用 UI 自动化。但是,我在从另一个事件处理程序中添加/删除事件处理程序时遇到问题:

我的程序启动了一个新的 MTA 线程,并在该线程上调用 AddFocusChangedEventHandler()。

我想监视焦点元素的属性更改。因此,在焦点更改处理程序中,我对先前获得焦点的元素调用 RemovePropertyChangedEventHandler(),对新获得焦点的元素调用 AddPropertyChangedEventHandler()。

但是,我发现在大约两次焦点更改之后,我不再获得焦点更改或属性更改事件。我的预感是有东西阻塞了后台线程。

如果我删除属性更改的代码,那么焦点跟踪将按预期工作。

我不确定这是否相关 - 但文档指出事件处理程序应该在同一个线程上添加/删除。由于我在一个焦点更改事件中调用 AddPropertyChangedEventHandler(),并在另一个焦点更改事件中调用 RemovePropertyChangedEventHandler(),因此这两个调用可能在不同的线程上执行。但是,我怀疑情况是否如此 - 即使是这样,它也不应该表现出我看到的阻塞行为。为了完整起见,这里只提一下。

0 投票
2 回答
1116 浏览

c# - UIA InvokePattern.Invoke() 在系统锁定时抛出异常。(在 .NET 4.5.2 中)

一旦系统被锁定,调用 Invoke() 方法(来自 System.Windows.Automation.InvokePattern)就会失败。在将我们的项目迁移到 .NET 4.5.2 后可以看到这种行为。而在 .NET 4.0 中,即使系统被锁定,该调用也可以正常工作。

使用的 dll 是 UIAutomationClient.dll,v4.0.0.0。

我得到的例外是:

System.InvalidOperationException 未被用户代码处理 Message=Operation 由于对象的当前状态而无效。

我知道使用 UIA 进行 GUI 测试通常需要解锁系统。由于此调用在系统锁定在 .NET 4.0 时有效,因此我希望在迁移后具有相同的行为。

0 投票
1 回答
285 浏览

ios - 在 calabash-ios consolre 中发送 uia 命令“target.deactivateAppForDuration()”返回错误消息

我正在创建一些 iOS自动化测试。当我调用 send_uia_command

在 calabash-ios 控制台中,应用程序进入后台,在持续时间后台应用程序屏幕打开后,我收到以下错误:

可能是什么问题?

更新:此错误仅在 iOS 9 上返回。

iOS 8.4.1 工作正常。

0 投票
1 回答
134 浏览

javascript - UIA 调用纯 JavaScript,不知道如何访问 DOM-Tree

我目前正在尝试自动化一个 iOs 应用程序,其中包含一个 SFSafariViewController,我想在其中单击一个文本字段,该字段具有 HTML 中的 ID,并且还具有来自应用程序的 AccessibilityIdentifier。我现在的问题是如何编写正确的 uia-command,因为正常的 tap_mark 或 touch 没有帮助,因为 SFSafariViewController 找不到 AccessibilityIdentifier。我的 uia 命令现在看起来像这样: uia("UIATarget.localTarget().frontMostApp().document.getElementById('Identifier').click()")

这是我执行命令时遇到的错误: