问题标签 [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.
ui-automation - 获取/使用完整路径在 UIA 和 White 中查找控件
我正在使用 Microsoft UI 自动化 + White 框架。是否可以从顶级父级获取到控件的完整路径,然后使用它来查找元素?例如,使用 UI spy 获取完整路径,然后以某种方式通过获取的路径获取控件?
谢谢
log4net - 当 log4net 在我的和第 3 方 dll 中配置时,log4net 创建 2 个日志文件而不是预期的一个
我的解决方案中有 2 个项目,都是类库类型。
- 动作:包含动作的项目,使用 White 编写(基于 MS UI 自动化的 UI 自动化框架)
- 测试:带有测试装置和测试方法的项目,使用 MbUnit
我决定为这两个项目添加使用 log4net 的日志记录。我正在使用的 log4net 配置如下:
我希望每次运行都创建一个文件(每个夹具套件运行一个)。但是会创建两个文件:
自动化_27.01.13_07.33.53.log
自动化_27.01.13_07.33.53.log.1
经过调查,我发现日志每次都在同一个地方被吐到第二个文件中——当调用包含 White 类型的操作时。看起来这是因为 White 在内部也使用 log4net。
所以,我想,情况是这样的:
- 我有一个初始化 log4net 的类
- 我启动了灯具套件
- 在测试项目中有一个运行 1st 的类,其中包含
Log.Info("...")
- 日志文件已创建
- 文本被附加到..
- 引用怀特类型的第一个动作是从测试项目中运行的
- 在这个阶段会创建一个新文件
- 我猜这是因为 White Dlls 内部还有另一个初始化 log4net 的调用,它在里面是硬编码的
知道如何在不修改 White(第 3 方 dll)的代码的情况下防止日志拆分吗?
c# - 白色 UI 自动化 C# 加载 White.Core 程序集失败
我试图运行一个简单的示例来启动 Windows 计算器并做一些事情:
上面链接的 Saldy 很旧,所以我从另一个示例中改编了代码:
面向测试人员的 White Windows UI 自动化入门教程
我的简单代码现在看起来像:
我还添加了WhiteCore.dll
参考。
我仍然收到一个错误:
警告:无法解析引用的程序集“White.Core”,因为它依赖于“System.Web,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,它不在当前目标框架“.NETFramework”中,版本=v4.0,配置文件=客户端”。请删除对不在目标框架中的程序集的引用,或考虑重新定位您的项目。
White.Core
因此,由于缺少System.Web
参考,加载存在问题。
有任何想法吗?这是我的 .NET 安装的问题吗?
找到了解决方案:
在 .net 4.0 版本上找不到 System.Web 程序集
您必须将 .NET 框架配置文件从 .NET 4.0 客户端更改为 .Net 4.0(完整)。
wpf - UI 自动化真的是 WPF 应用程序测试的好选择吗?
当谈到自动化 UI 测试时,对话总是以 UI 自动化结束。它是唯一的选择吗?
我个人不喜欢它的主要原因之一——复杂性。它被设计为适用于所有类型的应用程序。这种普遍性从来都不是免费的。UIA 引入了另一层抽象和相当复杂的 API。标准模式是有限的。自定义控件支持需要大量编码。我想知道为什么有人认为这是一个不错的选择?
WPF 具有出色且非常丰富的抽象,其中 UI 是视觉元素的分层树。这些元素公开了许多方法、事件和属性。树支持各种引用方式(例如相对源语法)。我们在 UIA 中失去了所有这些可能。为了什么?为了与老式应用程序和网络兼容?好吧,实际上,谁会需要它?万事通是个无所事事的大师。
像 Snoop 这样的工具可以将自己注入到正在运行的应用程序中并完全控制它。他们可以更改控件属性的值并引发事件。这还不够吗?没有。您希望您的测试能够像用户那样与 UI 进行交互——使用鼠标和键盘。但这是另一个可以解决的问题。
所以我想知道,我对 UIA 的喜悦有什么不明白的吗?
white-framework - 从 Java 运行白色 UI
有什么方法可以从 Java 调用 White UI 自动化工具?我已经有了一个 Java 框架,现在我需要处理一些 Silverlight 应用程序(这是遗留代码,开发人员尚未使其可编写脚本)。我不想为此维护一个单独的工作区/技术。有什么方法可以从我的 Java 代码中调用 White UI 或底层的 Windows UI 自动化?
c# - 使用带有 MessageBoxButtons.YesNoCancel 的 MessageBox 进行自动化测试
我将 TestStack.White 框架用于 WinForms .Net 2.0 C# 应用程序的编码自动回归测试。我在处理 OK/Cancel 消息框 ( ) 时没有问题,MessageBox.Show(...)
但在使用MessageBoxButtons.YesNoCancel
. 问题是,我不知道按钮名称是什么。
这些在我的测试夹具中工作:
有人知道NO按钮的等效“cancelButton”和YES按钮的等效“okButton”吗?或者甚至更好,如何找到它们。我的谷歌搜索失败了。
谢谢
white-framework - 从 OpenCover 覆盖率报告中删除 .Designer.cs 文件
我正在使用White框架针对我的应用程序用户界面编写测试。然后我使用 OpenCover 运行它们并使用 ReportGen 创建测试覆盖率报告。
我对结果的唯一抱怨是我的报告结合了两者MyForm.cs
,并且MyForm.Designer.cs
在生成报告时包含了多少 MyForm 类。我的问题是,如果任何测试触及 MyForm 那么所有代码在.Designer.cs
文件被添加到报告中(这些文件只包含一个自动生成的方法来创建由构造函数触发的所有控件)。该文件的内容只是样板文件,不包含任何有用的逻辑。然而,特别是在很薄的类中,这个文件最终可能会占到类中总代码的很大一部分。尽管我的测试很少或根本没有接触到任何可以从测试中受益的代码,但这会导致类显示出高水平的覆盖率。(例如测试“显示我的表单”按钮创建了一个“我的表单”对话框将导致所有内容MyForm.Designer.cs
被列为已覆盖,但不会实际测试 MyForm 类中的任何 UI 逻辑。)
OpenCover的-filter
参数仅适用于类/命名空间级别;所以我不能使用它们来仅排除设计器文件的内容(或其中的 InitializeComponents 函数)。有没有其他方法可以过滤用于生成报告的代码以将其从输出中排除?
white-framework - 如何在控件类型为 ControlType.Pane 的 TestStackwhite 中获取 customUIItem
我有一个 Windows 应用程序,其中几个按钮在 UISPY 中显示为窗格。
自动化元素
一般可访问性
状态
鉴别
能见度
控制模式
如何获取该窗格并单击它?有人可以帮忙吗
c# - C# 白色 UI 自动化:找不到 SWT 窗口
我正在使用White 进行 UI 自动化,它运行良好,直到我遇到一个用 Java 创建的应用程序。在那种情况下,我找不到任何窗户。如果我从桌面获取所有 Windows,那么我可以看到我正在寻找的窗口名称:
这是有效的,但是如果我附加正在运行的进程并尝试获取它的窗口,那么我什么也得不到,列表将为空:
这是应该找到主窗口的代码:
我得到的错误:附加信息:在等待 5000 毫秒后,在进程 7396 中找不到 SearchCriteria Name=HP Service Manager Client 的窗口
我可以在 VisualUIAVerify 中看到窗口,并且我知道它的名称是正确的。这是唯一一个不工作的应用程序,IE,Firefox等都工作正常,我总是可以识别主窗口,但这次我根本找不到任何窗口。
我想知道是否有人可以解释我为什么这样做并帮助我解决这个问题(或找到解决方法)。提前谢谢了。