Java Appium测试用例引发异常

Java Appium测试用例引发异常,java,eclipse,appium-android,android-sdk-manager,appium-desktop,Java,Eclipse,Appium Android,Android Sdk Manager,Appium Desktop,我正在尝试使用eclipse氧气运行我的第一个appium测试用例。 我一步一步地学习教程 我的实际代码是 import java.net.MalformedURLException; import java.net.URL; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import io

我正在尝试使用eclipse氧气运行我的第一个appium测试用例。 我一步一步地学习教程

我的实际代码是

    import java.net.MalformedURLException;
    import java.net.URL;

    import org.openqa.selenium.remote.CapabilityType;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import io.appium.java_client.AppiumDriver;
    import io.appium.java_client.MobileElement;
    import io.appium.java_client.android.AndroidDriver;

    public class AppiumTest {
    public static void main(String[] args) {

    //Set the Desired Capabilities
    DesiredCapabilities caps = new DesiredCapabilities();
    caps.setCapability("deviceName", "SM-T211");
    caps.setCapability("udid", "41022b138d311100"); //Give Device ID of your mobile phone
    caps.setCapability("platformName", "Android");
    caps.setCapability(CapabilityType.VERSION, "4.4.2");
    caps.setCapability("appPackage", "com.isinolsun.app");
    caps.setCapability("appActivity", "com.isinolsun.app.activities.OnBoarderActivity");
    caps.setCapability("noReset", "true");

    //Instantiate Appium Driver
    try {
        AppiumDriver<MobileElement> driver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"), caps);
        driver.closeApp();
    } catch (MalformedURLException e) {
        System.out.println(e.getMessage());
    }
}
import java.net.MalformedURLException;
导入java.net.URL;
导入org.openqa.selenium.remote.CapabilityType;
导入org.openqa.selenium.remote.DesiredCapabilities;
导入io.appium.java_client.AppiumDriver;
导入io.appium.java_client.MobileElement;
导入io.appium.java_client.android.AndroidDriver;
公共类应用程序测试{
公共静态void main(字符串[]args){
//设置所需的功能
DesiredCapabilities=新DesiredCapabilities();
caps.setCapability(“deviceName”、“SM-T211”);
caps.setCapability(“udid”,“41022b138d311100”);//给出您手机的设备ID
caps.setCapability(“平台名”、“安卓”);
caps.setCapability(CapabilityType.VERSION,“4.4.2”);
caps.setCapability(“appPackage”、“com.isinolsun.app”);
caps.setCapability(“appActivity”、“com.isinolsun.app.activities.OnBoarderActivity”);
caps.setCapability(“noReset”、“true”);
//实例化应用程序驱动程序
试一试{
AppiumDriver=新的AndroidDriver(新URL(“http://0.0.0.0:4723/wd/hub"(大写),;
driver.closeApp();
}捕获(格式错误){
System.out.println(e.getMessage());
}
}
我用的是真正的设备

已安装Appium桌面应用程序。 当我运行程序时,它会在这一行给我异常

    AppiumDriver<MobileElement> driver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"), caps);
        driver.closeApp();
    } catch (MalformedURLException e) {
        System.out.println(e.getMessage());
    }
AppiumDriver驱动程序=新的AndroidDriver(新的URL(“http://0.0.0.0:4723/wd/hub"(大写),;
driver.closeApp();
}捕获(格式错误){
System.out.println(e.getMessage());
}
例外消息是

    Exception in thread "main" java.lang.NoClassDefFoundError: javax/websocket/DeploymentException
at io.appium.java_client.android.ListensToLogcatMessages.<clinit>(ListensToLogcatMessages.java:34)
at com.appiumtest.firsttestscript.AppiumTest.main(AppiumTest.java:27)

    Caused by: java.lang.ClassNotFoundException: javax.websocket.DeploymentException
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more
线程“main”java.lang.NoClassDefFoundError中的异常:javax/websocket/DeploymentException 位于io.appium.java_client.android.ListensToLogcatMessages.(ListensToLogcatMessages.java:34) 位于com.appiumtest.firsttestscript.appiumtest.main(appiumtest.java:27) 原因:java.lang.ClassNotFoundException:javax.websocket.DeploymentException 位于java.net.URLClassLoader.findClass(未知源) 位于java.lang.ClassLoader.loadClass(未知源) 位于sun.misc.Launcher$AppClassLoader.loadClass(未知源) 位于java.lang.ClassLoader.loadClass(未知源) ... 还有两个 所有jar文件都是根据教程步骤提供的。 还添加了sdk、android studio、jdk

有人能指导我吗?

执行以下代码:

public class AppiumTest
{
   public static void main(String[] args) throws Exception
    {
        // start appium server
           Runtime.getRuntime().exec("cmd.exe /c start cmd.exe /k \"appium -a 0.0.0.0 -p 4723\"");
           //get address of appium server
                URL u=new URL("http://0.0.0.0:4723/wd/hub");
                //provide device and app info
                DesiredCapabilities dc=new DesiredCapabilities();
                dc.setCapability(CapabilityType.BROWSER_NAME,"");
                dc.setCapability("deviceName","NVRW499T9PVCSGTO");
                dc.setCapability("platformName","android");
                dc.setCapability("platformVersion","6.0");
                dc.setCapability("appPackage","com.isinolsun.app");
                dc.setCapability("appActivity","com.isinolsun.app.activities.OnBoarderActivity");
                //create driver object to launch app in device
                AndroidDriver driver;
                while(2>1)
                {
                    try
                    {
                        driver=new AndroidDriver(u,dc);
                        break;//terminate from loop
                    }
                    catch(Exception e)
                    {
                        System.out.println(e.getMessage());
                    }
                }
             driver.closeApp();
            //stop appium server
              Runtime.getRuntime().exec("taskkill /F /IM node.exe");
              Runtime.getRuntime().exec("taskkill /F /IM cmd.exe");

}
}
执行以下代码:

public class AppiumTest
{
   public static void main(String[] args) throws Exception
    {
        // start appium server
           Runtime.getRuntime().exec("cmd.exe /c start cmd.exe /k \"appium -a 0.0.0.0 -p 4723\"");
           //get address of appium server
                URL u=new URL("http://0.0.0.0:4723/wd/hub");
                //provide device and app info
                DesiredCapabilities dc=new DesiredCapabilities();
                dc.setCapability(CapabilityType.BROWSER_NAME,"");
                dc.setCapability("deviceName","NVRW499T9PVCSGTO");
                dc.setCapability("platformName","android");
                dc.setCapability("platformVersion","6.0");
                dc.setCapability("appPackage","com.isinolsun.app");
                dc.setCapability("appActivity","com.isinolsun.app.activities.OnBoarderActivity");
                //create driver object to launch app in device
                AndroidDriver driver;
                while(2>1)
                {
                    try
                    {
                        driver=new AndroidDriver(u,dc);
                        break;//terminate from loop
                    }
                    catch(Exception e)
                    {
                        System.out.println(e.getMessage());
                    }
                }
             driver.closeApp();
            //stop appium server
              Runtime.getRuntime().exec("taskkill /F /IM node.exe");
              Runtime.getRuntime().exec("taskkill /F /IM cmd.exe");

}
}

您必须删除java-client-6.0.0-BETA5 JAR并添加java-client-5.0.0-BETA5 JAR


干杯。

您必须删除java-client-6.0.0-BETA5 JAR并添加java-client-5.0.0-BETA5 JAR


干杯。

您好,请提供详细信息,如您正在使用的appium版本、java客户端版本、您正在使用的设备版本?@SurajJogdand。。。!appium 3.11,java-client-6.0.0BETA,三星。现在它可以与java-client-5.0.0一起使用。根据Gustavo的回答。您好,请提供详细信息,例如,您使用的是哪个appium版本、java客户端版本、您使用的是哪个设备版本?@SurajJogdand。。。!appium 3.11,java-client-6.0.0BETA,三星。现在它可以与java-client-5.0.0一起使用。根据Gustavo的回答,为什么在代码中使用while(2>1)?如果它捕捉到错误,它不会转到无限循环打印e.getMessage吗?为什么在代码中使用while(2>1)?如果它捕捉到错误,它不会进入无限循环打印e.getMessage吗?