11

我正在尝试使用Windows 应用程序驱动程序 (winAppDriver)appiumjava在 windows10 上运行 Windows 计算器应用程序的自动测试,如下例所示: https ://github.com/Microsoft/WinAppDriver/tree/master/Samples/Java/CalculatorTest ,但是当我在启动 appium 后运行测试时出现以下错误:

org.openqa.selenium.UnsupportedCommandException: The URL '/session' did not map to a valid resource
Command duration or timeout: 204 milliseconds
Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46'
System info: host: 'LKXXXX', ip: '10.88.68.53', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'
Driver info: io.appium.java_client.ios.IOSDriver

我的代码如下:

import org.junit.*;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.util.concurrent.TimeUnit;
import java.net.URL;
import io.appium.java_client.ios.IOSDriver;

public class CalculatorTest {

    private static IOSDriver CalculatorSession = null;
    private static WebElement CalculatorResult = null;

    @BeforeClass
    public static void setup() {
        try {
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability("app", "C:\\Windows\\System32\\calc.exe");
            CalculatorSession = new IOSDriver(new URL("http://127.0.0.1:4723"), capabilities);
            CalculatorSession.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);

            CalculatorSession.findElementByName("Clear").click();
            CalculatorSession.findElementByName("Seven").click();
            CalculatorResult = CalculatorSession.findElementByName("Display is  7 ");
            Assert.assertNotNull(CalculatorResult);

        }catch(Exception e){
            e.printStackTrace();
        } finally {
        }
    }
}

我的开发环境

  • Windows 10(已启用开发者模式)
  • appium v​​1.6.5
  • 爪哇 v1.8
  • winappdriver v0.9-beta
  • IDE - 日食

如果有人能帮我解决这个问题,我会很高兴。

提前致谢。

4

3 回答 3

25

经过长时间的研究,我找到了上述问题的答案。我们可以使用两种方法来解决这个问题。

注意:您应该启动appium 服务器 winappdriver.exe。不要尝试自己同时运行 appium 和 winappdriver。

  1. 如果你正在启动 appium server,你应该给出 URI 以及下面的 IP 和端口;

    CalculatorSession = new IOSDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

  2. 如果你直接运行winappdriver.exe,你应该只给出winappdriver的IP和端口,如下所示;

    CalculatorSession = new IOSDriver(new URL("http://127.0.0.1:4723"), capabilities);

于 2017-06-12T05:46:25.783 回答
5

首先感谢@Vijendran Selvarajah。

对于这个例子:<a href="http://appium.io/docs/en/about-appium/getting-started/" rel="noreferrer">http://appium.io/docs/en/about- appium/getting-started/需要添加这一行path: "/wd/hub"

// javascript

const wdio = require("webdriverio");
const assert = require("assert");

const opts = {
  port: 4723,
  path: "/wd/hub", // fix: The URL '/session' did not map to a valid resource
  capabilities: {
    platformName: "Android",
    platformVersion: "8",
    deviceName: "Android Emulator",
    app: "/path/to/the/downloaded/ApiDemos.apk",
    appPackage: "io.appium.android.apis",
    appActivity: ".view.TextFields",
    automationName: "UiAutomator2"
  }
};

async function main () {
  const client = await wdio.remote(opts);

  const field = await client.$("android.widget.EditText");
  await field.setValue("Hello World!");
  const value = await field.getText();
  assert.equal(value,"Hello World!");

  await client.deleteSession();
}

main();

我将分享一个完整的文档和压缩包,介绍如何使用 Appium 与所有部门一起测试 Android 应用程序。

于 2020-04-08T03:09:53.053 回答
2

根据我的测试,当您提供必须使用 Microsoft.WindowsCalculator_8wekyb3d8bbwe!App的系统路径时,Windows 中的计算器应用程序不会打开

而且你不需要打开appium服务器有appium有旧版本的winappdriver(0.7)

只是说winappdriver服务器应该在后台运行

于 2017-06-07T16:00:08.203 回答