问题标签 [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 投票
1 回答
738 浏览

c# - 如何从桌面应用程序视图切换到 Web 视图并再次返回?

我在我正在自动化的桌面应用程序中达到了某个点,我需要单击一个链接并继续在浏览器中实现自动化。该链接会自动转到 Internet Explorer。(有关如何将其复制并粘贴到 chrome 中的建议将不胜感激)。我需要知道如何从桌面切换到 web 视图、自动化 web 视图并返回到桌面视图。

到目前为止,这是我发现的最接近解决问题的方法。我是 c# 的新手,所以我知道我想要做什么的理论,只是不知道如何实现它。http://appium.io/docs/en/writing-running-appium/web/hybrid/。我已经将上下文记录到我的输出中。我还不能设置或重置它。

我需要知道如何更改上下文以及是否可以在本地 Windows 桌面应用程序和浏览器之间切换以及如何执行此操作。

0 投票
2 回答
6944 浏览

c# - 在使用 WinAppDriver 单击之前等待元素

我有这么一个微不足道的问题,但我很难让我的代码在继续之前正确等待一个对象。

我为我的驱动程序设置了以下配置

我期望这意味着它会等待至少 60 秒,然后再抛出与元素识别相关的错误,例如

然而,这种情况并非如此。尝试调用以下命令时,我在大约 2 秒内收到错误消息。

错误出现在我只是定义按钮属性的行上,而不是实际的 Click() 方法上。我没有正确传递元素属性吗?为什么按钮的实例化也会搜索它?

0 投票
1 回答
106 浏览

c# - 错误元素不再附加到 dom (winappdriver, appium-desktop)

我有一个自动化套件,可以在使用 C# 开发的桌面应用程序上运行,我们的 Windows 应用程序使用 Appium Windowsdriver。下面的代码在每个测试用例返回开始页面后执行。

这是自动化套件:启动应用程序

  1. 执行第一个测试测试成功
  2. 返回 StartPage 测试成功
  3. 执行第二次测试测试成功
  4. 返回 StartPage 测试未成功“错误消息“元素不再附加到 dom”
  5. 执行第三次测试
  6. 返回 StartPage 关闭应用程序

在第 4 步,执行因元素“Écran de demarage”不再附加到 dom 的错误而停止。

你能帮我解决这个问题吗?*

0 投票
2 回答
2283 浏览

c# - WinAppDriver:如何获取 ListView 控件的子列表

UI 自动化的新手,在 UWP 应用程序上使用 Appium WinAppDriver,我试图找到一种方法来获取特定ListView控件中所有元素的列表,然后从每个元素中获取值。我可能错了,但 some 之间似乎存在子/父关系WindowElement,在检查工具中检查特定屏幕时可以看到。请考虑以下简化的代码:

  1. 一般来说,这是一种正确的方法,还是我错过了一些基本的东西?我想从 ListView 中获取所有项目的列表
  2. 这个声明:List<WindowElement> y = x.FindElementsByClassName("ListViewItem").ToList();给我一个错误,因为FindElementsByClassName()显然返回一个列表AppiumWebElement而不是WindowElement
0 投票
1 回答
1732 浏览

c# - Appium桌面应用程序测试抛出元素无法定位异常,但在测试运行之前启动应用程序时通过

我正在尝试学习 Appium 并将其用于 WPF 应用程序测试。针对计算器或记事本的测试运行良好,但最近我在尝试测试自定义 WPF 应用程序时遇到了问题。

Appium 桌面应用程序测试抛出“使用给定的搜索参数无法在页面上找到一个元素”异常,但在测试运行之前启动应用程序时可以顺利通过。所以我猜我的设置/初始化阶段在某种程度上是不正确的,但我不知道为什么。

在没有先启动应用程序的情况下运行测试时会发生错误(因此当设置阶段必须启动应用程序时)。当应用程序在测试运行之前启动时,测试通过,或者即使它在之前失败的测试运行中保持打开状态。

应用程序启动大约需要 10 到 15 秒,在此期间首先出现斜线屏幕,然后是应用程序的主窗口。

项目中使用了Appium.WebDriver nuget packege,版本3.0.0.2

我已经尝试了 Thread.Sleep 30 秒,但它并没有解决问题。

异常消息:

System.InvalidOperationException HResult=0x80131509 Message=使用给定的搜索参数无法在页面上找到元素。Source=WebDriver StackTrace:在 OpenQA.Selenium.Remote.RemoteWebDriver.Execute 的 OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(响应 errorResponse)(字符串 driverCommandToExecute,字典2 parameters) at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value) at OpenQA.Selenium.Appium.AppiumDriver1.FindElement(字符串依据,字符串值)

来自 WinAppDriver 的日志:

“POST /session/23293B57-F396-47CC-83EF-FCA491E269B0/元素 HTTP/1.1 接受:application/json, image/png 内容长度:56 内容类型:应用程序/json;charset=utf-8 主机:127.0。 0.1:4723

{"using":"accessibility id","value":"UserInfoButtonAID"} HTTP/1.1 404 Not Found Content-Length: 139 Content-Type: application/json

{"status":7,"value":{"error":"no such element","message":"使用给定的搜索参数无法在页面上找到一个元素。"}}"

0 投票
3 回答
5112 浏览

selenium - 如何通过 winappdriver 启动我的应用程序?

我是 WinAppDriver 基于 Windows 的自动化的新手。请帮助我通过 winappdriver 启动我的 Windows 应用程序。

它启动我的应用程序,但打开窗口需要很长时间。同时,它在第 4 行抛出以下异常:-

0 投票
1 回答
115 浏览

unit-testing - 如何在 Appium 中为运行对话框创建会话?

通过使用 powershell 命令,我可以获得run dialog程序 id,即Microsoft.Windows.Shell.RunDialog. 但是,我无法使用下面的代码进行此操作。任何想法?

0 投票
0 回答
467 浏览

java - findElementByAccessibilityid 未在 Eclipse 智能感知中显示

我正在尝试使用 winappdriver 为 Windows 应用程序做 POC。我已经安装并运行了 winappdriver 1.1 版。我想通过使用它们的automationId 来查找元素。根据 winappdriver 文档,具有 AutimationID 的元素可以通过“findElementByAccessibilityId”定位。我无法在我的 Eclipse 智能感知中看到这个定位器策略。而是显示了“findElementsByAccessibilityId”(通知元素)。我应该怎么做才能在智能感知中看到“findElementByAccessibilityId”定位器。

POM.xml

0 投票
0 回答
213 浏览

selenium - 如何在 appium 中使用 Windows Elements 制作对象存储库

我最近将角色从为基于 Web 的应用程序构建 selenium 转换为使用 Appium/WinAppDriver 为 Windows 桌面应用程序构建自动化。

在 selenium 方面,我总是使用特定的结构来构建页面对象/操作。下面将存在于“对象存储库”类中,并将按页面列出我的所有对象。

然后我将创建将这些对象之一作为输入的方法。这是我将用作点击的简化方法。

然后在我的测试中它看起来像:

我想复制这个使用 Appium 与 Windows 元素交互,而不是与 web 元素交互。有人可以帮助我以与在 selenium 端相同的方式创建对象存储库所需的语法吗?

0 投票
1 回答
57 浏览

c# - 在等待开始并失败之前试图找到元素

我正在使用 win 应用程序驱动程序为桌面应用程序构建一些测试。一切都很好,但无法使用我之前在 Web 应用程序中使用的页面工厂模型。问题是如果一个元素还没有完成加载,那么在访问该元素之前任何类型的等待都不会运行。一旦我打电话等待它就会失败

...一旦访问它(并且在它可以运行之前),代码就会跳转到我设置的“页面”中的元素并说找不到它。我知道在调试时可以找到元素,所以元素定位器很好。有没有更好的方法来设置页面中的元素而不能使用页面工厂模型?Page 工厂似乎不会立即尝试访问该元素,这就是它运行良好的原因。以下是我设置元素的方式...