web-dev-qa-db-ja.com

URL '/ session'は有効なリソースにマップされませんでした| Javaを使用してwinAppDriver / Windowsアプリケーションドライバーを使用してデスクトップアプリケーションテストを実行する方法

Windowsアプリケーションドライバー(winAppDriver)appiumを使用して、windows10でWindows電卓アプリの自動テストを実行しようとしていますおよびJava以下の例のように: 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
  • Java v1.8
  • winappdriver v0.9-beta
  • IDE-Eclipse

誰かがこの問題を修正するのを手伝ってくれるならうれしいです。

前もって感謝します。

長い研究の結果、私は上記の質問に対する答えを見つけました。これは2つの方法で解決できます。

注:どちらかを起動する必要がありますappium serverorwinappdriver.exe appiumとwinappdriverの両方を同時に実行しないでください。

  1. appiumサーバーを起動している場合、IPとポートの後にURIと以下を指定する必要があります。

    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);

20

私のテストでは、使用する必要があるシステムパスを指定しても、Windowsの電卓アプリが開かないMicrosoft.WindowsCalculator_8wekyb3d8bbwe!App

appiumを開く必要はありません。サーバーには、appiumに古いバージョンのwinappdriver(0.7)があります。

winappdriverサーバーはバックグラウンドで実行する必要があると言っています

1
teja

最初に@Vijendran Selvarajahに感謝します。

この例の場合: 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 App with all deps。をテストする方法について、機能の完成したドキュメントとZipを共有します。

0
kangear