我收到 session not created 异常,我使用的是 Kepler 版本的 eclipse、appium 1.6.5 和 AVD 版本 7.0,下面是 TestNG 错误日志:

Posted

技术标签:

【中文标题】我收到 session not created 异常,我使用的是 Kepler 版本的 eclipse、appium 1.6.5 和 AVD 版本 7.0,下面是 TestNG 错误日志:【英文标题】:I am getting session not created exception, i am using Kepler version of eclipse, appium 1.6.5 and AVD version 7.0, below are the TestNG error logs: 【发布时间】:2018-01-28 10:13:46 【问题描述】:

log:org.openqa.selenium.SessionNotCreatedException:无法创建 新的远程会话。期望的能力 = 能力 [appActivity=com.knowarth.hrmsapp.ui.LoginActivity, 平台版本=7.0,androidPackage=com.knowarth.hrmsapp, platformName=Android, device=Android, deviceName=Nexus 5X API 24], 所需功能 = 功能 [] 构建信息:版本: '3.3.1',修订:'5234b32',时间:'2017-03-10 09:04:52 -0800'系统 信息:主机:'KA-LPT-104',ip:'192.168.43.85',os.name:'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_60' 驱动 信息:驱动程序版本:AndroidDriver 在 io.appium.java_client.remote.AppiumProtocolHandShake.lambda$1(AppiumProtocolHandShake.java:95) 在 java.util.Optional.orElseThrow(Unknown Source) 在 io.appium.java_client.remote.AppiumProtocolHandShake.createSession(AppiumProtocolHandShake.java:95) 在 io.appium.java_client.remote.AppiumCommandExecutor.doExecute(AppiumCommandExecutor.java:111) 在 io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:162) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:604) 在 io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42) 在 io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) 在 io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 在 org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:244) 在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:131) 在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:144) 在 io.appium.java_client.DefaultGenericMobileDriver.(DefaultGenericMobileDriver.java:38) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:88) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:112) 在 io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:73) 在 com.ka.tests.Appium_Webinar.setUp(Appium_Webinar.java:42) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)在 java.lang.reflect.Method.invoke(未知来源)在 org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108) 在 org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:523) 在 org.testng.internal.Invoker.invokeConfigurations(Invoker.java:224) 在 org.testng.internal.Invoker.invokeConfigurations(Invoker.java:146) 在 org.testng.SuiteRunner.privateRun(SuiteRunner.java:326) 在 org.testng.SuiteRunner.run(SuiteRunner.java:289) 在 org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 在 org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 在 org.testng.TestNG.runSuitesSequentially(TestNG.java:1301) 在 org.testng.TestNG.runSuitesLocally(TestNG.java:1226) 在 org.testng.TestNG.runSuites(TestNG.java:1144) 在 org.testng.TestNG.run(TestNG.java:1115) 在 org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132) 在 org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230) 在 org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)

【问题讨论】:

您是否创建了模拟器 - Nexus 5X API 24? 是的,我已经创建了它。 能看到完整的appium日志吗? 我无法添加appium登录评论,因为它太长了。 [BaseDriver] 提供了以下功能,但 appium 无法识别:androidPackage、设备。 [AndroidDriver] 错误:所需的功能必须在 Object.wrappedLogger.errorAndThrow 中包含应用、appPackage 或 browserName。 【参考方案1】:

这里的问题是,您正在创建会话但没有关闭它。因此,当您第二次运行测试时,它会显示“无法分配会话”。

使用这些方法来启动和停止appium,它可以解决你的问题。

static AppiumDriverLocalService appiumService;
public static void start() throws IOException 
    AppiumServiceBuilder builder = new AppiumServiceBuilder().withArgument(GeneralServerFlag.SESSION_OVERRIDE)
                                   .withArgument(GeneralServerFlag.STRICT_CAPS);
    appiumService = builder.build();
    appiumService.start();
    System.out.println("appium server is started");


public static void stop() throws IOException
    appiumService.stop();
    System.out.println("appium server is stopped");

【讨论】:

我连第一次都跑不了。如果我使用此方法启动和停止,那么我应该在哪里添加此代码,在 SetUp() 方法中?我们不需要创建另一个方法,对吧? 我正在使用 JUnit 运行 test 。所以创建 Appium 类并将上面的代码放入其中。在 public void setUp() 抛出 IOException Appium.start(); // 在这里启动驱动 测试 public void testWhatsNewDoneButton() // 测试步骤 public void tearDown() 之后抛出 IOException Appium.stop(); 【参考方案2】:

我通过将 java 客户端版本从 5.0.0 降级到 4.1.2 解决了这个问题。 谢谢。

希望这会对您有所帮助。祝测试愉快!!

【讨论】:

以上是关于我收到 session not created 异常,我使用的是 Kepler 版本的 eclipse、appium 1.6.5 和 AVD 版本 7.0,下面是 TestNG 错误日志:的主要内容,如果未能解决你的问题,请参考以下文章

Python selenium Message: session not created: This version of ChromeDriver only supports Chrome vers

python+appium 已解决真机运行appium报错“WebDriverException: Message: A new session could not be created. ((代

Appium运行时没有启动activity的权限:A new session could not be created.(Original error: Permission to start act

appium-launch activity选择错误时,提示“A new session could not be created. (Original error: Permission to st

NOT NULL 约束失败:/jobs/add/ 处的jobs_job.created_by_id IntegrityError

如何创建一个普通的 Session