问题标签 [winium]

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 投票
0 回答
134 浏览

wpf - Winium 驱动程序仅在打开 inspect.exe 时才识别 WPF 控件内部元素,否则将引发“未找到元素”异常

我的 WPF 自定义控件具有内部元素。就我而言,我的自定义控件是网格,内部元素是单元格。您可以在下面找到 AutomationPeer 实现,

我的问题是,只有在打开 inspect.exe 时,它​​才能在 Winium 测试脚本中正确识别。如果 inspect.exe 没有打开,Winium 会抛出“Element not found”异常。

下面是我的测试脚本,

异常详情,

在此处输入图像描述

请为此建议我任何解决方案。

0 投票
1 回答
2695 浏览

ui-automation - 如何使用 winium.desktop 驱动程序获取桌面应用程序的 xpath?

我们使用inspect.exe 来查找元素。我们试图为我们的桌面应用程序找到具有 ID、NAME 和类名的元素,但我们发现 id = ""、Name = "" 和类名 = "Text Box"。

我们可以使用类名,但是我们有两个具有相同类名的文本框。

那么,找到 Windows 桌面应用程序元素以及如何使用 winium.desktop 驱动程序找到桌面应用程序的xpath的其他可能性是什么?

任何帮助都将不胜感激。谢谢你。

在此处输入图像描述

0 投票
0 回答
54 浏览

c# - 我无法使用 c# 在 winium 中选择颜色选择器

我无法在 winium 驱动程序 c# 中的颜色选择器和复选框中选择颜色

我必须通过发送密钥来选择不同的颜色。

0 投票
0 回答
163 浏览

robotframework - 有时 winium 在我的代码中给出 NoSuchElementException

我有一个简单的代码,它间歇性地给出无此类元素异常。有时它会找到一个代码,有时它不能这样做。不知道为什么winium会抛出这样的异常。

演示示例:

0 投票
1 回答
4450 浏览

selenium - 如何在不使用 Headless 的情况下在 Jenkins 上运行我的自动化(测试)

我正在使用 WiniumDriver 运行我的自动化。当我在本地机器上运行时(没有无头模式)它运行良好,但是当我从 Jenkins 运行时它不起作用,因为我使用的是无头模式。

如何禁用 Jenkins 的无头选项?

0 投票
0 回答
49 浏览

wpf - 使用 Winium 自动化 WPF 应用程序的视觉关系

使用适用于 Windows 应用程序的其他自动化工具,例如 LeanFT,有一种方法可以指定视觉关系。例如,如果我确定了一个标签,然后我可以说查找它右侧的文本框。

有没有办法在 Winium 中做到这一点?

这是 LeanFT 中的代码示例

如您所见,我们本质上是在识别一个元素,然后将其用作 VisualRelation 中的 TestObject 来识别其他元素。

0 投票
0 回答
996 浏览

python - 无法在列表/表格对象上选择一行以使用 Winium for Python 进行桌面应用程序测试

我正在使用带有 Python 的 Winium 来自动化桌面应用程序,并且遇到了我在自动化方面遇到问题的 GUI 的一部分。

在创建配置的过程中,用户将有一个窗口,他们可以在其中选择要创建的协议类型。

在此处输入图像描述

我遇到的问题是通过鼠标单击选择表中的特定行。由于有多行具有相同的协议名称,我将要根据协议名称和模式(即 Modbus 从站)选择一行。

理想情况下,我想搜索表格,根据协议和模式找到所需的行,然后选择该行。我已经弄清楚如何仅使用协议名称来选择一行:

我遇到的问题是找到一种基于两个参数选择行的方法。对于 Web UI 测试,它通常是一个“/td”或“/tr”对象,我可以很容易地在 HTML 代码中找到列表/表格,并使用它的 XPath 来指定一行或一行中的一个单元格。我的桌面应用程序并非如此。我一直在尝试同时使用Inspect Object (Ver 7.2.0.0) ...

在此处输入图像描述

...和​​UISpy(版本 3.0.0.0)...

在此处输入图像描述 在此处输入图像描述

...但一直无法弄清楚如何执行此操作。通过一些研究和搜索,我尝试了以下几种组合:

我做了一些元素挖掘并且能够显示有 182 个 Xpath 对象。

我确信有办法实现这一点,但我正在努力解决这个问题。我发现的文档非常少,而且我发现的大部分帮助都是针对 Java 的。

更新 (1) 4/24/2019 我也一直在分别查看列表中的项目,希望找到一种方法来执行此操作。以下是列表/表格中这些项目之一的信息:

检查对象 - Modbus 从站 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

UISpy - Modbus 从站 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

更新 (2) 2019 年 4 月 24 日 我发现了一些有用的东西。我在上面的 Inspect 和 UISpy 屏幕截图中注意到,当单击表中存在的单个项目时,它显示“LocalizedControlType”等于“文本”。因此,我开始使用该参数测试不同的可能性,并使用上面的 XPath 取得成功。我发现以下所有 3 个选项都能够选择表中的 Modbus Slave 行:

选择对象 78 会导致选择 Modbus 主站,选择对象 82 会导致选择下一行。这种方法会起作用,但如果能找到一种更简洁的方法来选择既知道“协议”又知道“模式”的行会很好。

0 投票
1 回答
325 浏览

python - 在继续之前使用完整的非 XPath 路径确认元素不再存在

我正在使用 Winium 和 Python 进行一些桌面应用程序测试。对于我的应用程序,我首先确认进度条出现在窗口上以及一些其他文本。然后我确认进度条不再存在,然后继续前进。

我遇到的问题是用于验证进度条的代码部分在继续之前已经消失。该特定行执行时间太长。经过一番调查,我得出结论,这是因为我只能将组件地址输入“presence_of_element_located”,而不是其完整地址,这看起来像......

不幸的是,我无法将其分解为 XPath 并改为使用它。据我所知,我也不知道使用此地址检索对象的 XPath 的方法。我想找到一种方法来做到这一点.. (1) 将此绝对/完整地址插入 expected_conditions.presence_of_element_located() 或找到另一种方法来确认该对象不再存在。

- 20190502 更新 -

到目前为止,我最接近解决方案的是结合以下想法:

这确实让我无法确认进度条已经消失,因此测试可以继续。它还具有与通配符相同的时间问题,这意味着必须首先搜索对象。

- 20190502 更新 (2) -

所以,我在解决这个难题方面有了一点突破。对于使用 XPath,如果我在做 Web UI 测试,我可以查看 XML 代码并看到它是一个'//div'、'//table'、'//input'、'//tspn'等。 . 我一直在使用 UISpy 工具来找出我桌面应用程序上对象的名称。当我看着它时,我对它所引用的对象前面的标签产生了好奇。

在此处输入图像描述

从控制视图中,我看到“MyApp”旁边有标签“Window”。所以我决定用它来改变我的 XPath 尝试如下:

这不仅有效,而且比以前的尝试快了一点。问题是下一层被标记为“状态栏”,我不确定如何在 XPath 中表示它。

0 投票
1 回答
71 浏览

java - 如何仅从一个 GUI 进行 JUnit 测试?

我在 Winium 写了一些 JUnit 测试用例,这与 Selenium for Calculator 几乎相同。我的问题是每次测试都会启动一个新的calculator.exe,但我想对同一个calculator.exe 进行所有测试,但我也想分开JUnit 测试。下面你可以看到我的代码:

0 投票
1 回答
271 浏览

winium - 如何更改 Winium 中 ControlType.TreeItem 的切换状态?

我正在使用 Winium 自动化 SWF Windows 应用程序。我有很多 SwfTreeView 和 TreeNodes 项目。我需要选中/取消选中一些我无法执行的树节点复选框。

我尝试单击树节点,但它只是选择节点而不是选中/取消选中节点。