Appium 运行 Appium 第一个 case 就出错了,看不出错误,google 了也没结果,特来求救

硫酸铜 · June 06, 2017 · Last by securitytest replied at September 26, 2017 · 1229 hits

代码很简单,如下
AndroidDriver androidDriver = null;
DesiredCapabilities cap=new DesiredCapabilities();
//cap.setCapability("noReset", true);
cap.setCapability("deviceName", "Android Emulator");//设备名称
cap.setCapability(CapabilityType.BROWSER_NAME, "");
cap.setCapability("platformName", "Android");
//cap.setCapability("platformName", "Android"); //安卓自动化还是 iOS 自动化
cap.setCapability("platformVersion", "7.1.1"); //安卓操作系统版本
//cap.setCapability("sessionOverride", true);//重新启动的话会重置 session

cap.setCapability("appPackage","com.xunmeng.pinduoduo");//被测 app 的包名
cap.setCapability("appActivity",".ui.activity.MainFrameActivity");//被测 app 的入口 Activity 名称

//cap.setCapability("unicodeKeyboard", true); //支持中文输入
//cap.setCapability("resetKeyboard", true); //支持中文输入,必须两条都配置

try {
androidDriver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub,cap);//把以上配置传到 appium 服务端并连接手机")
} catch (MalformedURLException e) {
e.printStackTrace();
}
androidDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);//隐式等待

//找到横滑栏,挨个点击 icon
List eList = androidDriver.findElements(By.id("image"));
for(WebElement element:eList){
element.click();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
androidDriver.pressKeyCode(AndroidKeyCode.BACK);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
这行报错:androidDriver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub,cap"));
异常如下:
Connected to the target VM, address: '127.0.0.1:62301', transport: 'socket'
Exception in thread "main" java.lang.IllegalAccessError: tried to access method org.openqa.selenium.Platform.extractFromSysProperty(Ljava/lang/String;) Lorg/openqa/selenium/Platform; from class org.openqa.selenium.remote.RemoteWebDriver
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:271)
at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:131)
at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:144)
at io.appium.java_client.DefaultGenericMobileDriver.(DefaultGenericMobileDriver.java:36)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:114)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:132)
at io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:92)
at com.pdd.test.MainDemo.main(MainDemo.java:39)
实在没看懂什么意思,google 了也没找到相关资料,请大家赐教

共收到 16 条回复 时间 点赞

new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub,cap"));

确定 url 没写错?一般是 (new URL("location string"), capabilityInstance) 的

2Floor has deleted
cukes 回复

嗯,没写错,cap 在 new URL 的参数外面的,要不然编译都错误了啊

4Floor has deleted
硫酸铜 回复

看看 ADB 能连上机器不?先排除真机网络连通性,以及开发者调试模式看看呢。
实在不行可以用幂等的模拟器,先排除你测试脚手架的问题(特殊 BUG 版本撞大运的概率也有的)

cukes 回复

粘贴到网页上代码格式有点乱了

cukes 回复

模拟器和真机都试过了,都有这个问题。
事实上,到这行代码的时候,应用都已经启动起来了,但还是报了这个异常,之后的操作就进行不下去了

cukes 回复

adb 是可以连接的,没有问题

硫酸铜 回复

使用 markdown 的代码块排版,代码显示就好多了。

PS:建议把整个完整的文件,包括 import 的部分也一起粘贴上来吧。我猜 import 那部分有问题。

找到横滑栏,挨个点击 icon,应该是这样写的吧

List < WebElement >  eList  =  androidDriver.findElements(By.id("image"));
androidDriver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub,cap"));

仔细检查下代码,明显的错误,引号位置

从 log 日志对应不到相应代码行, 请贴出完整代码。

12 楼正解

硫酸铜 #15 · June 08, 2017 Author
xuxu 回复

粘贴到网页上不知道为啥,格式有点问题,其实 cap 是在 new URL 参数之外的,这里是没问题的。。

硫酸铜 #16 · June 08, 2017 Author
李瑞煜 回复

log 对应的那一行就是

at com.pdd.test.MainDemo.main(MainDemo.java:39)
这行出错了,然后看错误提示第一行提示 java.lang.IllegalAccessError,显示非法连接错误,可能你的参数有问题
我是这么理解的

硫酸铜 关闭了讨论 29 Mar 22:12
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up