Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The URL '/session' did not map to a valid resource | How to run desktop application test using winAppDriver / windows application driver using java?

I'm trying to run automate test for windows calculator app on windows10 using Windows application driver (winAppDriver), appium and java as below example: https://github.com/Microsoft/WinAppDriver/tree/master/Samples/Java/CalculatorTest, but when I run the test after started the appium getting below mentioned error:

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

My code is as below:

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 {
        }
    }
}

My Dev Environment

  • Windows 10 (Developer mode enabled)
  • appium v1.6.5
  • java v1.8
  • winappdriver v0.9-beta
  • IDE - Eclipse

I will be glad if anyone can help me to fix this issue.

Thanks in advance.

like image 337
Vijendran Selvarajah Avatar asked Jun 07 '17 10:06

Vijendran Selvarajah


3 Answers

Thanks @Vijendran Selvarajah at first.

for this example:http://appium.io/docs/en/about-appium/getting-started/ need add this line 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();

I will share a completed doc and zip in the feature about how to use Appium to test Android App with all deps.

like image 122
kangear Avatar answered Oct 22 '22 04:10

kangear


to my testing, the calculator app in windows doesn't open when you giving the system path you have to use Microsoft.WindowsCalculator_8wekyb3d8bbwe!App

and you don't need to open appium sever has appium has the older version of winappdriver(0.7)

and just saying the winappdriver server should be running in the background

like image 31
teja Avatar answered Oct 22 '22 02:10

teja


After long research, I have found the answer for the above question. We can solve this using two methods.

NOTE: You should start either appium server or winappdriver.exe. Don't try to run both appium and winappdriver at once by your self.

  1. If you are starting appium server, you should give the URI as well as below following by the IP and port;

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

  2. If you are running the winappdriver.exe directly, you should give only the IP and the port of winappdriver as below;

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

like image 23
Vijendran Selvarajah Avatar answered Oct 22 '22 03:10

Vijendran Selvarajah