问题标签 [white-framework]
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.
c# - 查找进程并将 ProcessStartInfo 附加到方法
我正在尝试操作 Windows 的计算器。如果我的程序找到了一个实例(它确实找到了),它需要将进程的 startInfo 提供给 TestStack 的用于 UIAutomation 的 White 框架。但是,我不断收到以下异常:
来自found[0].StartInfo
以下代码行
计算器进程已在运行。(配件 > 计算器)
c# - 如何使用 DockPanel 根创建白色 CustomUIItem?
我在窗口中设置了具有复杂结构的自定义控件。我想创建一个自定义控件来封装该控件的所有逻辑(带有内部网格、按钮等)。
在我添加的 XAML 中:
在我添加的源代码中:
现在添加我正在尝试查找该项目:
它抛出错误,找不到具有自定义类型和“WidgetName”名称的控件。
在一个窗口中也会有一组这样的控件。有没有类似的东西
c# - 如何将从 GetMultiple 检索到的 UIItem 转换为白色的具体 CustomUIItem?
我有 CustomUIItem 实现。在一个窗口中,我动态创建了 N 个这种类型的控件。
我需要获取所有这些控件的列表:
这将返回一个包含这些参数的所有控件的列表:
现在我想将这些自定义控件转换为具体的实现 MyControlType。我怎样才能做到这一点?
PS我试图转换为我的类型,例如
我也尝试手动创建控件:
在这种情况下,容器属性为空,我找不到内部控件。
c# - System.Windows.Automation 在枚举表行与 UIAutomationCore 时非常慢
我正在尝试通过 UI 自动化对我的应用程序进行自动化测试(主要TestStack.White
用于提供友好的界面;它System.Windows.Automation
用作后端)。我有一个大约 200 行的表,我需要测试它的值(实际上我只想测试第一行和最后几行)。我发现单独使用 COM-interop UIAutomationCore,我可以在几分之一秒内枚举行,但前提是我不使用 White 或System.Windows.Automation
. 一旦System.Windows.Automation
初始化,未来枚举行的 UI 自动化操作就会很慢:
我创建了一个简单的 WinForms 测试应用程序(TableTest.exe
以验证它是否System.Windows.Automation
与我的应用程序无关:
然后我创建了另一个测试应用程序来测试第一个。它可以用作控制台应用程序或 WinForms 应用程序。首先我使用 COM 自动化进行测试,然后使用 System.Windows.Automation 进行测试,然后再次使用 COM 自动化进行测试。从我上面引用的输出中可以看出,第一个块执行得非常快,接下来的两个块执行得非常慢。如果我注释掉System.Windows.Automation
块代码,那么两个 COM 块都会快速执行。
到底是System.Windows.Automation
什么在扼杀 UI 自动化的性能?我查看了 White 源代码,但没有看到任何明显的东西。我无法分析 System.Windows.Automation 本身,因为我找不到任何 PDB。我对 UI 自动化不是很熟悉,所以也许对其他人来说很明显。白色是:0.13.0.0
我正在 64 位 Windows 7 上进行测试。
c# - 离屏元素teststack白色
我需要自动化 3rd 方 WPF 应用程序。我使用 TestStack/White。此应用程序具有由图像呈现的菜单栏。在某些操作菜单发生变化后。那里提出了新的图像。当我想点击新图片时:
我得到例外:
TestStack.White.AutomationException:无法对图像执行操作。AutomationId:, Name:, ControlType:image, FrameworkId:WPF, 元素在屏幕外。
我将 Microsoft Inspect 用于研究元素。当我开始测试时,Inspect 显示图像不在屏幕上。但是,如果我手动执行这些操作,它会完美运行,并且在 Inspect 中此图像不会在屏幕外。
如何刷新这些元素或清除窗口缓存?
c# - 当前上下文中不存在名称“AutomationId”
我组装了 UI 自动化测试(白色)。
我已经引入了一个类,其中包含要在此程序集中重用的所有 Autination Id:
现在我试图在我的测试类(同一个程序集)中使用它:
此代码可以在本地编译。但是在 TeamCity 上,我遇到了这样的错误:
console-application - 右键单击控制台应用程序后,上下文菜单的白色/UI 自动化
我一直在研究如何从上下文菜单中访问这些项目,但是,到目前为止我的搜索还没有成功。我发现 ContextMenu 显示为 Desktop 的子项,这也是 MSDN 所证实的。我正在为控制台应用程序进行自动化。但是,当我调试以查看桌面的子项时,或尝试从我的根目录访问我的上下文菜单时 - 它表示它不存在。此外,UISpy/Inspect 告诉我 ProcessID 与我的应用程序相关。那么麻瓜和父母在哪里呢?
下面是我正在使用的代码示例
右键单击 TreeNode 后,我得到了弹出菜单,我想单击其中一个可用的选项(菜单项)。但是在检查工具中弹出菜单显示为上下文及其桌面的子项。我无法专注于上下文菜单并单击可用的选项(菜单项)?谁能指导我如何单击上下文菜单上可用的菜单项?
提前致谢!
c# - Backgroundworker 中的测试执行突然在具有许多子元素的元素上结束
我的一般设置:我们编写了一个带有小 gui 的小型 excel 导入器,它允许非程序员使用“Button.Click”之类的命令编写和执行 gui 测试。底层框架是 TestStack.White。导入 excel 文件和其他一些用户交互后,测试在 System.ComponentModel.BackgroundWorker 内开始,只要我不查看(甚至不与包含大量子元素的元素交互),它就可以正常工作。
但是,一旦我与具有很多元素的 TestStack.White.UIItems.WindowItems.Window 或 TestStack.White.UIItems.UIItemContainer 交互,测试执行就会结束。
对于交互,我的意思是从简单的东西,如非空检查或赋值到局部变量或询问它的子数之类的东西。结束测试执行的一些示例:1)
2)
3)
在没有数百个元素的窗口中,所有三个示例都按预期工作。
很多元素我的意思是,例如一个内部有一个 ScrollView 的窗口,它有一个包含数十个甚至数百个条目的表格,其中每个条目由 3-4 列组成,其中包含文本或复选框或类似的东西。
Backgroundworkers RunWorkerCompleted 和 Disposed 不会被调用。我根本没有任何异常,即使故意放置了 try/catch 块,我也一无所获。调试器到达导致问题的行,就是这样。之后什么也没有发生,即使等待了 1 小时。
相反,我得到的只是几个不同的“线程 {some hex id} 已退出,代码为 259 (0x103)。” 在 Visual Studio 的输出窗口中。这是我上次执行的测试:
据我了解此消息,这意味着线程还活着。https://stackoverflow.com/a/22395548/1171328
如果我进入调试器检查导致错误的元素的内容,我会在项目(带有子元素的列表)之后的所有元素上超时,包括项目。
此外,问题不是(或不应该?)主线程结束,就像在这个线程中的情况一样:尝试在调试中逐步执行 BackgroundWorker 代码,但程序意外结束,因为 gui 仍然运行良好。
有谁知道这里可能发生了什么或如何解决这个问题?
这就是我启动应用程序的方式:
之后用户设置他想要测试的窗口(可能是也可能不是模态窗口 - 但在没有数百个元素的窗口中它可以工作):
context.UIAnchor 就是上面提到的Element。然后调用用户设置的方法(例如Button.Click)。有趣的是 context.UIAnchor = win 并且 items.count 的输出有效。
更新:如果我关闭要测试的应用程序,在我关闭测试程序之前,我会得到一个 ElementNotAvaiableException。所以线程不应该完全死掉。
white-framework - 如何关闭测试堆栈白色的日志记录?
White 正在向控制台输出大量日志,我想将其关闭以查看我的输出。这怎么可能?我尝试了以下但仍然看到日志。是否需要添加更多代码?
vb6 - 使用 TestStack.White 查找 VB6 控件
我正在使用 TestStack.White 从用 VB6 编写的旧应用程序中读取列表。我能够找到对列表的引用,但 TestStack.White 没有看到列表中的值。
当我使用 Spy++ 或 Visual UI 自动化验证 ID 为 15、14、16、12、11、10、8 等的窗格时,列会突出显示,而不是实际的文本框。你可以看到这个应用程序截图。
有人对我如何从列表中获取值有任何建议吗?
提前致谢。
这是应用程序的屏幕截图。
Spy++截图
Visual UI 自动化验证的屏幕截图