问题标签 [teststack]
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# - TestStack.White 不能点击菜单栏项目?
我目前正在制作一个程序,该程序将自动执行我需要在程序上执行的任务。
我目前遇到的一个问题是“单击”菜单栏中的菜单。
我使用 Spy++ 找到了菜单栏的类名,它被称为 TActionMainMenuBar,但它“下”的所有内容都本地化为 ammbSSC。
https://i.imgur.com/R7lLfVg.png
我可以使用以下命令找到主菜单栏:
返回:
但是尝试使用 .ByText 或 .ByIndex (或其他任何东西)查找“ACTIONS”会引发无法找到“ACTIONS”的异常。
我还能找到这样的文字吗?或者我应该求助于使用鼠标输入 - 即自动化鼠标移动?
编辑:
我也试过这样做:
但这会引发“索引超出了数组的范围。”
我也试过这样做:
和:
但这会将我的鼠标移动到屏幕中心附近。
c# - TestStack.White 面板点击
我想用 TestStack.White 创建一个自动登录 WinForms 应用程序。这是我的代码:
XY 应用程序主窗口有 10 多个面板,其中之一是“登录”面板。当我单击 button1 时,XY 应用程序“登录”面板将可见,因此可以正常工作。
但是我的 WinForms 应用程序冻结了,当我关闭 XY 程序但我想继续运行时,我得到了控制权。
在调试模式下,显示以下错误消息:“托管调试助手'DisconnectedContext':'为此 RuntimeCallableWrapper 转换到 COM 上下文 0x15305d0 失败...”
我想我明白为什么会收到此消息,但我不知道解决方案是什么。
有人可以帮助我吗?谢谢
c# - 从面板获取数据(自动化)
我想知道是否有可能从面板获取列表/值。(因为面板只是面板)
此面板行为类似于 gridview 或 listview。有行和列,但控件类型是窗格。
我使用自动化工具 UIA 和 TestStack 但徒劳地发现这个面板我不知道如何从面板获取数据。此面板没有子元素/项目。
有没有人有任何想法或我在寻找什么,或者这件事是不可能的?
谢谢你
c# - 测试堆栈 | 如何查找自定义控件和调用方法/触发事件
我有一个自定义控件HtButton
,它继承自Control
.
我做了一个自定义FrameworkElementAutomationPeer
并覆盖了OnCreateAutomationPeer()
in HtButton
。
要获得所有这些,我使用以下调用:
我收到一份清单CustomUIItem
:
以下调用引发ArgumentException: At least two conditions must be specified.
:
我已阅读以下帖子和文章但没有成功
- TestStack White 在 WPF 应用程序中找不到 TextBox
- https://teststackwhite.readthedocs.io/en/latest/AdvancedTopics/CustomUIItems/
- http://putridparrot.com/blog/teststack-white-gotchatips/
也许有人可以给我一个原始示例如何Foo()
触发FooEvent
.HtButton
visual-studio - Bodi 接口无法使用 SpecFlow 解决
我进行了全面搜索,发现了多篇关于 Bodi 异常的帖子,但这些帖子都没有与 TestStack.White 相关,而且在我的情况下没有任何回复有效。
我正在使用以下内容:
- 规范流 2.4.0
- TestStack.White(0.13.3)
- 女士测试(1.4.0)
- 视觉工作室 2017(15.9.4)
我正在尝试使用现有接口将自动化元素转换为 TestStack.White UIItem
然后我像这样使用它
当我运行测试时,出现以下错误
消息:测试方法 SmokeTests.SmokeTestSpec.SmokeTestsFeature.EditsAreSaved 抛出异常:BoDi.ObjectContainerException:接口无法解析:TestStack.White.Factory.UIItemFactory
我尝试在 ScenarioHooks 中注册容器并在 Before Scenario 挂钩中注册接口。当我这样做时,我得到完全相同的东西。
我从事 SpecFlow 已经有很长时间了,但我总是被这种容器注入的东西所困扰。我已阅读文档并搜索了各个站点,但无法正常工作。
欢迎任何建议。我在这里完全被难住了。
c# - 受系统繁忙状态影响的 TestStack.White 菜单操作
这是通过nunit3.ConsoleRunner
.
这真的很奇怪,但是在我假期之前可以完美运行的相同代码现在挂了长达 2 小时或更长时间。我为我们的测试创建了自己的方法,因为在导航过去的第二级菜单项时MenuClick()
,标准方法也经常挂起。MenuBar.MenuItem()
正如我所说,我的方法在假期前效果很好。
反正现在Menu.SubMenu()
通话频繁需要2个小时甚至更长时间才能完成,这是不能接受的。
另一个奇怪的地方是测试代码成对地点击了第三级菜单项,它们都打开了一个浏览文件夹对话框。第一个选择源文件夹,另一个选择目标文件夹。“挂起”仅在(到目前为止)尝试submenu
在一对 3 级菜单项点击中为第二级获得第二级时发生。
目前为了解决这个问题,我正在生成一个调用 menu = menuBar.MenuItem() 的新线程。在主线程中,我等待菜单为非空或超时发生,然后在检查之间进行 500 毫秒的睡眠。这至少可以让我重试。但是,出现这种情况时,整个被测应用程序中的其余菜单操作都挂起,因此我无法重试。似乎是 TestStack.White 菜单处理区域中的错误。
c# - TestStack.White ListBox.SelectedItemText 不起作用
我有一个带有 2 个控件的WinForms
对话框。ListBox
在正在测试的应用程序中,双击列表框控件之一(我将其称为 CONTROL LISTBOX)中的任何项目会导致选择另一个列表框(SLAVE LISTBOX)中的匹配项。
我的测试导致在控制列表框中输入多个条目。然后测试ListBox.SelectedItem.DoubleClick()
对每个 CONTROL lISTBOX 项目执行 a,比较ListBox.SelectedItemText
两个列表框控件的。
在应用程序 UI 中,这始终有效,但ListBox.SelectedItemText
对 SLAVE LISTBOX 的调用测试仅在双击\比较的初始迭代中返回与 UI 中选择的内容正确匹配的文本。
谁能帮我弄清楚我做错了什么?谢谢!
这是我的代码:
如您所见,通过下图,两个列表框中的文本是相同的。但是,对ListBox.SelectedItemText
顶部列表框 (SLAVE LISTBOX) 的调用返回第一次迭代的值,该值与双击/比较的第一次迭代期间底部列表框 (CONTROL LISTBOX) 中的第一项匹配。
c# - TestStack.White 获取所有标签
有没有办法获取特定类型窗口的所有元素?在我的情况下,我想获取页面的所有选项卡,然后过滤它具有更大的 Y 坐标。
此方法:
Get<TestStack.White.UIItems.TabItems.Tab>(TestStack.White.UIItems.Finders.SearchCriteria.All)
仅返回它找到的第一个元素。
谢谢你和问候,扬
c# - 使用 TestStack.White 测试触发后台工作的控件
我正在尝试为 WPF 应用程序编写 UI 测试用例。这包括一个搜索文本框。在向文本框提供输入时,搜索输入字符串是在后台线程中完成的。
这是我的基本代码:
现在在我设置Text
属性的那一行,后台工作将启动,框架抛出异常:
TestStack.White.UIItems.UIActionException :窗口没有响应,等待 50000 毫秒后
基本上,框架会等待配置的时间,然后由于后台工作未及时完成而引发异常。
我检查了文档,它提到了一种解决方法,但这将涉及我更改我的应用程序代码。由于这是一个遗留应用程序,我不想更改代码(我们正在迁移,因此希望限制代码更改)。
这似乎是一个普遍的问题,但一直无法看到任何解决方案?有任何想法吗?
更新 以下代码确实有效,但仍未接近找到原始问题的解决方案。
c# - 在自动化运行期间阻止光标移动
我正在为我的 WPF 应用程序使用 Teststack 白色框架(C#、.net)编写一些自动化测试。我希望在测试运行时冻结任何光标移动。有没有办法做到这一点?
我已经试过了
但它不起作用,因为我的应用程序没有以管理员权限运行
我试过 NativeMethods.BlockInput(true);
我收到拒绝访问异常