0

I'm trying to test my application in eclipse IDE using java throwing this error. I started appium server also. gave matching port numbers too. this is my log trace. help me out.Thanks in advance

This is the code I used for testing my android app using appium:

public class MilonowFirstTest {

        static AppiumDriver<WebElement> driver;

    //  @BeforeClass
        public static void main(String[] args) throws MalformedURLException

        //public void Setup() throws MalformedURLException
        {
            DesiredCapabilities cap = new DesiredCapabilities();
            //cap.setCapability(AndroidMobileCapabilityType.De, value);
            cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Android emulator");
            //cap.setCapability(MobileCapabilityType.APP_PACKAGE, value);
            cap.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.test.myapp");

            //cap.setCapability(MobileCapabilityType.APP, "");
            cap.setCapability("avd", "Honor 7X API 27");
            cap.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
            cap.setCapability(MobileCapabilityType.PLATFORM_VERSION, "23");
            cap.setCapability(MobileCapabilityType.AUTOMATION_NAME, "Appium");

            driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wb/hub"), cap);

            Assert.assertNotNull(driver.getContext());
        }

//      @Test()
//      public void SimpleTest()
//      {
//          Assert.assertNotNull(driver.getContext());
//      }
    }

Error log:

Exception in thread "main" org.openqa.selenium.WebDriverException: It is impossible to create a new session because 'createSession' which takes HttpClient, InputStream and long was not found or it is not accessible
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T15:15:03.216Z'
System info: host: 'DESKTOP-4DSS7OC', ip: '192.168.2.21', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_161'
Driver info: driver.version: AndroidDriver
    at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:195)
    at io.appium.java_client.remote.AppiumCommandExecutor.createSession(AppiumCommandExecutor.java:209)
    at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:231)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
    at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
    at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
    at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:207)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130)
    at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:38)
    at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:84)
    at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:94)
    at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:93)
    at testcase.MilonowFirstTest.main(MilonowFirstTest.java:37)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at io.appium.java_client.remote.AppiumCommandExecutor$1.createSession(AppiumCommandExecutor.java:185)
    ... 13 more
Caused by: org.openqa.selenium.WebDriverException: Unable to parse remote response: The URL '/wb/hub/session' did not map to a valid resource
Build info: version: '3.12.0', revision: '7c6e0b3', time: '2018-05-08T15:15:03.216Z'
System info: host: 'DESKTOP-4DSS7OC', ip: '192.168.2.21', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_161'
Driver info: driver.version: AndroidDriver
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:111)
    ... 18 more
1
  • Where did You put Your "APP" parameter, which app are You testing, try first to put cap.setCapability(MobileCapabilityType.APP, "path_to_your_app"); Commented Jul 24, 2018 at 10:44

3 Answers 3

1

Close the appium server and start it again, this should work. The permanent solution for this problem is:

  • Start Appium app
  • Go to advance setting
  • enter server address and server port that you want. I am using 127.0.0.1 as server address and 4723 as server port
  • Select or check session Override

If you like you can save this configuration as preset for using next time. Also include following desire capabilities in your app

AppiumDriver<MobileElement> driver;
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("deviceName", "Android phone");
caps.setCapability("udid", "your device uuid");
caps.setCapability("platformName", "Android");
caps.setCapability("platformVersion", "your device version");
caps.setCapability("appPackage", "name of app package");
caps.setCapability("appActivity", "name of app activity");

driver=new AndroidDriver<MobileElement>(new URL(
            "http://127.0.0.1:4723/wd/hub"), caps);

How to find device uuid?

  • Enable usb debugging mode in your android device and connect to your laptop
  • Open command prompt and type adb devices

It will show the list of connected devices to your laptop. Below List of devices attached you can find your device uuid

How to find appPackage and appActivity

click here: How to find appPackage and appActivity?

Sign up to request clarification or add additional context in comments.

1 Comment

I upvoted your answer because while it did not necessarily fix the reported problem (which I have as well) the link to page on two methods of finding package and activity was helpful.
0

Try by putting in desired capabilities parameter "APP",

cap.setCapability(MobileCapabilityType.APP, "path_to_your_app");

or as You started with a matched in-pair caps, if application is already installed on your device:

    cap.setCapability("appActivity", "com.test.myapp.ui.activities.MainActivity");
    cap.setCapability("appPackage", "com.test.myapp");

and You can check Your activity and package name with this command, by opening application on Your phone and going to console and run this:

adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'

this will return something like this:

mCurrentFocus=Window{5f6bfe8 u0 d0 abc.com.test.android/com.test.abc.ui.home.HomeActivity}
mFocusedApp=AppWindowToken{123d4faf token=Token{asd2342 ActivityRecord{323tgee3 u0 abc.com.test.android/com.test.abc.ui.home.HomeActivity t1732}}}

where as follows:

Window{5f6bfe8 u0 d0 abc.com.test.android/com.test.abc.ui.home.HomeActivity}

activity: `

"abc.com.test.android"

...and is a package

"com.test.abc.ui.home.HomeActivity"

but recommended to put all params in the mix APP, APP_PACKAGE, APP_ACTIVITY

hope this helps,

6 Comments

I am unable to get APP_PACKAGE' in MobileCapabilityType.APP_PACKAGE`
Sorry I typed from my head, but try like this cap.setCapability("appActivity", "com.test.myapp.ui.activities.MainActivity"); cap.setCapability("appPackage", "com.test.myapp"); , updated my answer
your answer seems fine partially. but, my assumption is that it is not connecting to appium server. so it couldn't create connection?
Did You try with above solution? It seems to me that he can't find app to put the hook on it, so this is way exception is thrown.
i tried your solution, issue still not resolved. And at appium server side error message "[HTTP] --> POST /wb/hub/session" , [HTTP] No route found. Setting content type to 'text/plain' and [HTTP] <-- POST /wb/hub/session 404
|
0

You are calling

       driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wb/hub"), cap);

Correct URL should be /wd/hub.

1 Comment

Nice catch, but I doubt that was the solution.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.