java - Appium 测试用例抛出异常
问题描述
我正在尝试使用 Eclipse 氧气运行我的第一个 appium 测试用例。我一步一步地跟进教程
http://www.automationtestinghub.com/appium-tutorial/
我的实际代码是
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());
}
}
我正在使用真实设备。
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());
}
异常消息是
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
根据教程步骤包含所有 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");
}
}
推荐阅读
- c# - 如何在使用 Unity Scriptable API 的脚本中使用 Humanoid Model : Animator(property)
- java - 为什么我的秒表程序无法运行?
- arrays - 将字节数组转换为 int64 golang 数组
- r - 创建 ggplot2 stat 扩展的计算错误
- python - 使用 pandas 从 json 文件中提取数据时,布尔值会自动转换为大写
- c# - C# 中是否有任何方法,例如 Java 中的 equalsIgnoreCase
- google-cloud-platform - GCP IoTCore won't parse payload using Gateways and HTTP bridge
- innerhtml - 如何使用 innerHTML 将 js 数组插入到 html 中?
- ruby-on-rails - 如何将查询参数放在 _path rails_helper 上
- javascript - 微软边缘控制台中的 javascript 错误