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

Vijendran Selvarajah picture Vijendran Selvarajah · Jun 7, 2017 · Viewed 13k times · Source

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.

Answer

Vijendran Selvarajah picture Vijendran Selvarajah · Jun 12, 2017

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