【问题标题】:Sending request to WinAppDriver (WebDriver) using Postman使用 Postman 向 WinAppDriver (WebDriver) 发送请求
【发布时间】:2021-05-09 23:16:11
【问题描述】:
最近,我尝试使用 xPath 查询在我的 Windows 通用应用程序中查找一组元素。我正在使用 WinAppDriver 来自动化测试。具体的挑战是,由于应用程序的性质和自动化,将我的应用程序自动化到可以执行 xPath 查询的程度需要 60-90 秒。由于我对 xPath 查询不是很熟悉,因此我需要通过只能描述为试错过程的方法来识别所需的查询。进行代码更改、重新构建应用程序以及运行应用程序直到评估 xPath 查询的总时间意味着我每次迭代都需要几分钟时间,而且这个过程非常缓慢。我决定如果我可以在测试代码中设置一个断点,将代码执行到被测应用程序处于所需状态的点,然后使用 Postman 执行多个查询,我会发现效率更高我需要运行的确切查询。
【问题讨论】:
标签:
selenium-webdriver
postman
appium
【解决方案1】:
可以将 Appium 或 Selenium 请求发送到与 WebDriver 兼容的服务。不建议将此方法作为替代自动化技术,但可以方便地调试特定命令。
步骤如下:
- 创建一个新的 Postman 环境来包含您的 WinAppDriver 请求
- 在此环境中创建一个新的请求选项卡
- WebDriver 请求的 URL 应采用以下格式“http://[ip address:port]/session/{{sessionID}}/[command]。
- IP 地址应与启动 WebDriver 服务时使用的 WebDriver 地址相匹配。通常,默认为 127.0.0.1
- 端口是连接WebDriver服务时指定的端口。默认情况下,通常为 4723,但可以在运行时在本地计算机上启动 WebDriver 服务时指定。
- 可以在 WinAppDriver 控制台窗口中找到会话 ID
下面的屏幕截图显示了 WinAppDriver 命令的捕获。第一个圆圈区域是上面查询中应该使用的会话 ID 值。第二个圆圈区域是 IP 地址和端口 ID 值,第三个区域是发送的查询正文。此查询正文对应于 WinAppDriver 命令。
相应的 Postman 查询将如下面的屏幕截图所示。
我将 Content-Type 设置为“application/json”。请注意,上面屏幕截图的最后一行是响应内容,并再次包含会话变量以及已发现元素的元素 ID。
[command] 值和任何可选的查询正文特定于所需的命令。弄清楚这一点的最佳方法是从自动化软件中运行所需的命令,并参考 WinAppDriver 输出以查看正在发送的命令。通常,我在调试器中我要执行的行上设置一个断点,然后在查看 WinAppDriver 输出窗口时单步执行该命令。这让我可以准确地确定与我的命令相对应的输出。然后,您可以在调试器中停止测试应用程序时从 PostMan 发送多个命令。在完成之前不要关闭测试应用程序,因为这将释放会话连接。
这种方法可以让您快速尝试所需命令的不同迭代,并查看 WinAppDriver 是否找到所需的控件