Appium 退回到直接的W3C远程端连接和会话NotCreateDexception:无法创建新的远程会话

Appium 退回到直接的W3C远程端连接和会话NotCreateDexception:无法创建新的远程会话,appium,appium-android,Appium,Appium Android,运行appium脚本时,会引发异常: Unable to create new remote session 即使我在appium设置上覆盖了它的会话。 我通过configuration.properties为脚本提供URL和其他参数 Android Studio日志: file path: C:\Users\ab.chauhan\AndroidStudioProjects\AppiumHJ\app\configs\Configuration.properties Inside applic

运行appium脚本时,会引发异常:

Unable to create new remote session
即使我在appium设置上覆盖了它的会话。 我通过configuration.properties为脚本提供URL和其他参数

Android Studio日志:

file path: 
C:\Users\ab.chauhan\AndroidStudioProjects\AppiumHJ\app\configs\Configuration.properties
Inside application handling constructor
C:\Users\ab.chauhan\AndroidStudioProjects\AppiumHJ\app\FrameworkReports\11_Jan_2019
file path: C:\Users\ab.chauhan\AndroidStudioProjects\AppiumHJ\app\configs\Configuration.properties
Inside application handling constructor
C:\Users\ab.chauhan\AndroidStudioProjects\AppiumHJ\app\FrameworkReports\11_Jan_2019Before Suite Execution started
Driver:null
URL:http://0.0.0.0:4723/wd/hub
cap: Capabilities [{appPackage=cfg.getAppPackage(), appActivity=cfg.getAppActivity(), noReset=true, newCommandTimeout=4000, platformVersion=7.0 NRD90M, automationName=uiautomator2, platformName=Android, deviceName=Xiaomi Redmi Note 4 Android 7.0, API 23}]
Jan 11, 2019 6:40:34 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
Jan 11, 2019 6:40:35 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Falling back to original OSS JSON Wire Protocol.
Jan 11, 2019 6:40:36 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Falling back to straight W3C remote end connection
.
org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{appPackage=cfg.getAppPackage(), appActivity=cfg.getAppActivity(), noReset=true, newCommandTimeout=4000, platformVersion=7.0 NRD90M, automationName=uiautomator2, platformName=Android, deviceName=Xiaomi Redmi Note 4 Android 7.0, API 23}], required capabilities = Capabilities [{}]
Build info: version: 'unknown', revision: '1969d75', time: '2016-10-18 09:43:45 -0700'
System info: host: 'GSG1PM-FT0384', ip: '10.10.23.99', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_152-release'
Driver info: driver.version: AndroidDriver
应用程序脚本:

DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Xiaomi Redmi Note 4 Android 7.0, API 23");
cap.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, "4000");
cap.setCapability("noReset", true);
cap.setCapability(MobileCapabilityType.PLATFORM_VERSION, "7.0 NRD90M");
cap.setCapability("automationName", cfg.getAutomationName());
cap.setCapability(AndroidMobileCapabilityType.APP_PACKAGE,"cfg.getAppPackage()");
cap.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, "cfg.getAppActivity()");
System.out.println("Before Suite Execution started");
System.out.println("Driver:"+driver);
System.out.println("URL:"+cfg.getApplicationUrl());
System.out.println("cap: "+cap);
try{
driver = new AndroidDriver<MobileElement>(new URL(cfg.getApplicationUrl()), cap);
System.out.println(driver);}
catch(MalformedURLException e){
    e.printStackTrace();}
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
此错误消息

Jan 11, 2019 6:40:34 PM org.openqa.selenium.remote.ProtocolHandshake createSession 
 INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end 
Jan 11, 2019 6:40:35 PM org.openqa.selenium.remote.ProtocolHandshake createSession 
 INFO: Falling back to original OSS JSON Wire Protocol. 
Jan 11, 2019 6:40:36 PM org.openqa.selenium.remote.ProtocolHandshake createSession 
 INFO: Falling back to straight W3C remote end connection
org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session.
org.openqa.selenium.SessionNotCreatedException:无法创建新的远程会话

…表示AndroidDriver无法启动/生成新的远程会话

您的主要问题是所使用的二进制文件版本之间的不兼容,如下所示:

您使用的是java.version1.8.0_152-release,它非常古老。 解决方案 将JDK升级到最新级别。 重新启动系统。 执行测试。
你的问题的答案在于你所设置的能力

您需要根据自己的能力修改这些行

cap.setCapability(AndroidMobileCapabilityType.APP_PACKAGE,"cfg.getAppPackage()");
cap.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, "cfg.getAppActivity()");
对,


实际上,您在引号中调用了您的方法,这是不应该做的。直接调用它,就像调用URL和AutomationName一样。

是否有证据表明问题出在Java版本?这听起来像是一个推测性的疑难解答提示,而不是一个有效的答案。您的print语句显示您正试图访问位于的selenium服务器,该服务器不可路由。服务器可能绑定到0.0.0.0,这意味着所有接口。但是您必须使用真正的IP访问它,如127.0.0.1(如果是本地的),或真正的IP(如果是远程的),谢谢您宝贵的时间。通过重新安装io.appium.setting&unlock.apk以及更改功能,问题得以解决。我的情况
cap.setCapability (AndroidMobileCapabilityType.APP_PACKAGE, cfg.getAppPackage());
cap.setCapability (AndroidMobileCapabilityType.APP_ACTIVITY, cfg.getAppActivity());