URL'/会议';未映射到有效资源|如何使用java使用winAppDriver/windows应用程序驱动程序运行桌面应用程序测试?

URL'/会议';未映射到有效资源|如何使用java使用winAppDriver/windows应用程序驱动程序运行桌面应用程序测试?,java,appium,windows-applications,winappdriver,Java,Appium,Windows Applications,Winappdriver,我正在尝试在windows10上使用windows应用程序驱动程序(winAppDriver)、appium和java运行windows计算器应用程序的自动测试,如下例所示:,但在启动appium后运行测试时出现以下错误: org.openqa.selenium.UnsupportedCommandException: The URL '/session' did not map to a valid resource Command duration or timeout: 204 milli

我正在尝试在windows10上使用windows应用程序驱动程序(winAppDriver)appiumjava运行windows计算器应用程序的自动测试,如下例所示:,但在启动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 v1.6.5
  • JavaV1.8
  • winappdriver v0.9-beta版
  • IDE-Eclipse
如果有人能帮我解决这个问题,我会很高兴


提前感谢。

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

而且您不需要打开appium服务器,因为appium具有旧版本的winappdriver(0.7)


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

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

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

  • 如果您正在启动appium服务器,则应在IP和端口旁边提供URI以及以下信息

    CalculatorSession=新的IOSDriver(新的URL(“http://127.0.0.1:4723/wd/hub(能力),

  • 如果您直接运行winappdriver.exe,您应该只提供winappdriver的IP和端口,如下所示

    CalculatorSession=新的IOSDriver(新的URL(“http://127.0.0.1:4723(能力),


  • 首先感谢@Vijendran Selvarajah

    对于此示例: 需要添加此行
    路径:“/wd/hub”

    //javascript
    const wdio=require(“webdriverio”);
    const assert=require(“assert”);
    常量选项={
    港口:4723,
    路径:“/wd/hub”//fix:URL“/session”未映射到有效的资源
    能力:{
    平台名称:“安卓”,
    平台版本:“8”,
    deviceName:“Android仿真器”,
    app:“/path/to/the/download/ApiDemos.apk”,
    appPackage:“io.appium.android.api”,
    appActivity:“.view.TextFields”,
    自动名称:“UiAutomator2”
    }
    };
    异步函数main(){
    const client=wait wdio.remote(opts);
    const field=wait client.$(“android.widget.EditText”);
    wait field.setValue(“你好,世界!”);
    常量值=等待字段。getText();
    assert.equal(值为“Hello World!”);
    等待client.deleteSession();
    }
    main();
    

    我将在关于如何使用Appium与所有deps一起测试Android应用程序的功能中分享一份完整的文档和zip。

    谢谢你的回答,但我找到了正确的方法。请参考我的回答让我在这里添加信息,因为我偶然发现:要使用WinAppDriver,您需要以管理员身份运行它,并在Windows设置中激活开发人员模式。