Windows 使用 QAF 的应用程序自动化

Windows application automation using QAF

我正在寻找对使用带有 BDD 步骤的 Qmetry 自动化框架的记事本等自动化 windows 应用程序的支持。是否有任何 link 或解决方案可以实施。我尝试使用 Appium 驱动程序但没有成功。

第一步:打开记事本 第 2 步:输入“一些文字”[在此处输入 link 描述][1]

成功记录: Windows 应用程序驱动程序在以下位置侦听请求:http://127.0.0.1:4723/ 按 ENTER 退出。

========================================== POST /session HTTP/1.1 接受编码:gzip、deflate 连接:保持活动 内容长度:258 内容类型:application/json;字符集=utf-8 主机:127.0.0.1:4723 用户代理:Apache-HttpClient/4.5.2 (Java/16.0.2)

{"capabilities":[{"desiredCapabilities":{"app":"C:\Windows\System32\notepad.exe","platformName":"Windows"}},{"requiredCapabilities ":{}}],"desiredCapabilities":{"app":"C:\Windows\System32\notepad.exe","platformName":"Windows"},"requiredCapabilities":{}} HTTP/1.1 200 好 内容长度:141 内容类型:application/json

========================================== 获取 /session/3E4610D7-9EBB-4998-921B-94220578D3F1 HTTP/1.1 接受编码:gzip、deflate 缓存控制:无缓存 连接:保持活动 主机:127.0.0.1:4723 用户代理:Apache-HttpClient/4.5.2 (Java/16.0.2)

HTTP/1.1 200 好 内容长度:90 内容类型:application/json

{"status":0,"value":{"app":"C:\Windows\System32\notepad.exe","platformName":"Windows"}}


失败记录:

Windows 应用程序驱动程序侦听请求:http://127.0.0.1:4723/ 按 ENTER 退出。

========================================== POST /wd/hub/session HTTP/1.1 接受编码:gzip 连接:保持活动 内容长度:641 内容类型:application/json;字符集=utf-8 主机:127.0.0.1:4723 用户代理:selenium/3.141.59 (java windows) X-幂等键:202d0858-641b-4263-88b9-4b5b1ed0ecc1

您没有提供您尝试过的内容以及您遇到的错误是什么。

为了自动化 windows 本机应用程序,您需要使用 appium windows 驱动程序。 Windows 驱动程序是 appium 实现,因此您可以像 android 或 ios appium 驱动程序一样使用它。

可以参考

编辑:下面的示例工作正常:

属性 setting capabilities

remote.port=4723
driver.name= appiumDriver

appium.additional.capabilities={"app":"C:\Windows\System32\notepad.exe","driverClass":"io.appium.java_client.windows.WindowsDriver"}
#appium.capabilities.driverClass=io.appium.java_client.windows.WindowsDriver
#appium.capabilities.app=C:\Windows\System32\notepad.exe

它与正常的 Web 驱动程序测试一样运行良好,没有问题:

import static com.qmetry.qaf.automation.step.CommonStep.sendKeys;
import static com.qmetry.qaf.automation.util.StringMatcher.exact;
import static com.qmetry.qaf.automation.ui.webdriver.ElementFactory.$;

...

    @Test
    public void testCanEditInNotpad(){
        getDriver().verifyTitle(exact("Untitled - Notepad"));
        getDriver().findElementByClassName("Edit").sendKeys("it worked!...")
        $("className=Edit").sendKeys(" This also worked!...");
        sendKeys(" Common Step worked as well!...", "className=Edit");
    }