问题标签 [winappdriver]

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 投票
3 回答
582 浏览

c# - 数字文本框 UpDown 控件使用 WinAppDriver 访问 AutomationID

我一直在测试一个桌面应用程序(WPF)。使用中:C#、Appium、WinAppDriver。一个菜单中有多个数字文本框。我在这里遇到的问题是我无法访问此页面上特定文本框的 UpButton,因为所有 Up/Down 按钮都具有相同的 ID,即“PART_IncreaseButton”。

它是一个数字文本框,具有内置的上下控制。一个菜单中有几个。 文本框

我使用 inspect.exe 来识别对象。检查器中的树: 检查屏幕截图

因此,在自定义下是文本框“编辑”、“按钮”、“按钮”的 3 个控件,使用“Root_0_Blue_AutomationId” 我可以访问文本框,例如在框中写入一些内容。

但是,如果我检查特定文本框的向上按钮,它具有自动化ID "Part_IncreaseButton"。并且其他文本框的 upcontrols 具有相同的 ID。只有rootID的AutomationID不同,upcontrols的ID保持不变,例如:

根 ID(文本框):“Root_0_Blue_AutomationId” UpControl ID:“Part_Increasebutton”

根 ID(第二个文本框,绿色通道不同): “Root_0_Green_AutomationId” UpControl ID:“Part_Increasebutton”

如何管理它以访问第二个文本框的 UpControl?

0 投票
2 回答
5064 浏览

selenium - 如何定位桌面应用程序的 XPATH

如何在桌面应用程序中找到元素的 XPath

我正在使用检查工具来获取元素的名称。如何从 Inspect 工具创建 Xpath?我可以在 XPath 中使用 LegacyIAccessible.ChildId 来定位元素的位置吗?

0 投票
2 回答
788 浏览

c# - 使用 Winapp 驱动程序拖放 UI 元素

我在 Visual Studio 中安装了一个插件,可让我创建表单 UI。现在,我正在尝试借助使用 winapp 驱动程序的自动化脚本在表单屏幕上拖放一个元素,但我无法做到这一点。

我使用来自 github 的示例尝试了此代码,但没有发生。

0 投票
0 回答
379 浏览

c# - WinAppDriver 在一台机器上找到元素,但在其他机器上找不到

我有一个自动化测试环境,由一台开发机器和两个以自动化方式运行测试的盒子组成。三台机器都运行 Windows 10。三台机器都使用相同版本的 WinAppDriver,并且三台机器都使用最新版本的 Google Chrome。这三个都在机器上登录的本地管理员帐户下运行。

我最初在 IE 中构建了所有测试,但由于浏览器不稳定,我一直试图将它们转换为 Chrome。

在这个特定的例子中,我使用 WinAppDriver 来检测浏览器何时向用户呈现下载对话框。它似乎在所有机器上的 IE 中都能正常工作。它甚至可以在开发机器上的 Chrome 中正常工作,但在测试机器上的 Chrome 中无法正常工作。

到目前为止,我一直无法弄清楚测试机器上可能有什么不同,除了 MSBuild 是由测试机器上的 TFS 和开发机器上的 Visual Studio 启动的这一事实。

这是从工作的开发机器返回的结果的图像。 工作机

以下是其中一台测试机器的结果图像。 在此处输入图像描述

第二张图片: 在此处输入图像描述

如您所见,除了测试机器上的完全失败之外,唯一的其他区别似乎在于对初始浏览器挂钩的响应。工作的不返回 sessionId,而失败的则返回。对我来说,这表明产品版本存在差异,但我验证了 WinAppDriver 的两个版本是相同的。

我已经尝试了多个版本的 XPath 查找,以防万一这是问题,但它们都在开发机器上工作,而没有一个在测试机器上工作。

有谁知道为什么我的测试框无法在 Chrome 中专门执行此查找?

编辑:请求了代码,屏幕截图有点多余,但在这里。

以及异常的文本,也显示在屏幕截图中:

WebDriverException -> 使用给定的搜索参数无法在页面上找到元素。StackTrace:在 OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) 在 OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary'2 参数) 在 OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String值)在 OpenQA.Selenium.Remote.RemoteWebDriver.FindElementByXPath(String xpath) 在 OpenQA.Selenium.By.<>c__DisplayClass19_0.b__0(ISearchContext context) 在 OpenQA.Selenium.By.FindElement(ISearchContext context) 在 OpenQA.Selenium.Remote .RemoteWebDriver.FindElement(By by) 在 SeleniumExtras.WaitHelpers.ExpectedConditions.<>c__DisplayClass6_0.b__0(IWebDriver driver) 在 OpenQA.Selenium.Support.UI.DefaultWait'1。

编辑 2:将 WinAppDriver 挂接到浏览器进程中的 BaseBrowser.Window 方法摘录:

0 投票
1 回答
377 浏览

c# - Appium:如何编写for循环以单击带有索引的按钮?

我正在使用 C# 和 Appium 为我的公司自动化 Windows 10 软件。在书签栏上,有一个我想点击的标签列表。它们是索引为 15-20 的按钮。而不是做

等等,我如何编写一个循环并单击onbutton[15]到的 for 循环button[30]?Appium 甚至可以做到这一点吗?谢谢!

0 投票
0 回答
708 浏览

selenium - Katalon Studio 无法在 Windows 对象间谍中启动应用程序

我在防火墙上使用Katalon Studio 7.0.4Windows Application Driver v1.2 RC允许端口 4723。我用来PuTTY测试的。连接成功,应用程序显示在 spy 工具中,但尝试使用某些方法(例如:click、getText)时出错。我在日志中看到以下错误。

在服务器端:

在客户端:

org.openqa.selenium.WebDriverException:处理命令时远程端发生未知错误。(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:0 毫秒构建信息:版本:'3.141.59',修订:'e82be7d358',时间:'2018-11-14T08:25:53' 系统信息:主机:'笔记本电脑',ip:'192.168.56.1',os.name:'Windows 10',os.arch:'amd64',os.version:'10.0',java.version:'1.8.0_181'驱动程序信息:io.appium.java_client.windows.WindowsDriver Capabilities {app: C:\Users\user101\Downloads..., javascriptEnabled: true, platform: WINDOWS, platformName: WINDOWS} 会话 ID: 3A8AB5F8-E6B3-4FB1-9C14-E48B8F4F5C4D在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect。

在 Katalon 工作室: Katalon Studio Windows 间谍工具

0 投票
1 回答
476 浏览

selenium-webdriver - 我们可以将 WinAppDriver 与 Selenium WebDriver(自动化 Siebel/Silverlight 应用程序)连接起来吗?

我正在使用 WinAppDriver 打开Internet Explorer (ixplore.exe)并通过首先使用inspect.exe找到地址栏的定位器然后按回车键导航到 URL 。它成功地将我导航到页面。现在我想要的是我可以使用 selenium WebDriver 和 WinAppDriver,这样我就可以处理 Web 和桌面元素。我正在尝试自动化Silverlight/Siebel应用程序。

这是我使用 Windows Appium 驱动程序打开 IE 浏览器的代码示例:

任何帮助,将不胜感激。

0 投票
1 回答
650 浏览

visual-studio - WinAppDriver 连续抛出一个错误为“未知错误,操作超时”

我正在尝试使用 WinAppDriver 自动化安装在Visual Studio 2019 Enterprise中的扩展的 UI,并且在成功完成配置和测试场景之后,WinAppDriver 服务器不断抛出错误,如下所示。

最初我的测试套装成功运行,但现在它不断抛出错误。

此外,在 Visual Studio 中,它会记录一个错误:

“消息:测试方法 abc.1234.test 引发异常:System.NullReferenceException:对象引用未设置为对象的实例。”

这就是我的会话的创建方式。

如果有人可以为我的问题提供解决方案,将不胜感激。谢谢你。

0 投票
1 回答
3443 浏览

selenium - WinAppDriver - 使用文本定位元素

我正在自动化一个简单的 Windows 窗体应用程序,我正在尝试WindowsElement使用它的内部文本来定位一个。我的WindowsElement样子是这样的:

Name该元素除了, ControlType(我在 XPath 中使用)之外没有其他属性,并且ValuePattern.Value它包含我正在搜索的所需文本。我想基于'Text'、 使用ValuePattern.Value或来定位元素LegacyIAccessiblePattern.Value,但我似乎无法编写成功使用这些属性的 XPath。我不能用它@Name来定位元素,因为其他几个元素共享相同的@Name属性值。Text是唯一的独特属性。

在 Selenium WebDriver 中,我可以通过如下文本定位元素:

在 Appium 中,我可以使用这个:

在 WinAppDriver 中,我正在尝试:

我也试过:

这两个都抛出一个NoSuchElementException. 但是,我能够成功调用WebDriverWait并且TextToBePresentInElement这是有效的:

这也在打印正确的文本:

然而,这只是一个调试场景,我正在检索一个列表,并打印第一个列表的文本——这只是一个验证元素是否具有有效.Text属性的测试。我不能将此定位器用于我的最终代码,因为不能保证它选择了正确的元素。

我查看了 WinAppDriver 存储库示例,但我找不到任何实际使用文本的东西——每个人都使用@Name@AutomationId——我的元素名称不是唯一的,它没有自动化 ID,所以这对我不起作用。

我知道我可以使用 LINQ 来解决这个问题:

但这感觉像是一种 hacky 解决方法,如果可能的话,我想避免它。

如何使用其文本定位元素?像//DataItem[@Text='Text'](我也尝试过,顺便说一句)这样的东西更可取,我可以将 my'Text'作为参数传入。

0 投票
1 回答
1337 浏览

tesseract - 如何使用 WinAppDriver GetScreenshot 方法中的 Tesseract LoadTiffFromMemory 加载图像?

我正在使用以下代码从 WinAppDriver 会话中捕获屏幕截图,然后将其传递给 Tesseract Pix 类以供 OCR 导航 WinAppDriver 会话(Win32 应用程序)无法识别的表中的链接。注意会话是使用 WinAppDriver 定义的WindowsDriver<WindowsElement>

正如评论中所述,我可以将文件保存在本地,然后访问它。但是,我希望通过这个来LoadTiffFromMemory代替。测试失败,异常System.IO.IOException: Failed to load image from memory