Appium 和虚拟 Android 设备所需的功能:SessionNotCreatedException 错误

Posted

技术标签:

【中文标题】Appium 和虚拟 Android 设备所需的功能:SessionNotCreatedException 错误【英文标题】:Appium and Virtual Android Device desired capabilities: SessionNotCreatedException error 【发布时间】:2017-08-01 21:06:38 【问题描述】:

所以我正在尝试为在 android Emulator (avd) 中运行的 Android 应用编写自动化测试脚本,但我在 Appium 日志中收到以下错误:

[debug] [MJSONWP] Bad parameters: BadParametersError: Parameters were incorrect.
 We wanted "required":["desiredCapabilities"],"optional":["requiredCapabilities
","capabilities","sessionId","id","sessionId","id"] and you sent ["desiredCapab
ilities","requiredCapabilities","capabilities","alwaysMatch","firstMatch"]

我的设置是:

    Android Studio 162(带 sdk,注意这个最新版本不再包含 'android' 命令,android 虚拟设备的创建是通过 Tools > Android > AVD Manager 完成的) IntelliJ 2016.3.5(用于编写自动化测试脚本) selenium-java 3.3.0(必需的 jar) appium java客户端4.1.2(需要jar) appium server 1.6.3(在nodejs cli中通过运行'appium'执行) Android 虚拟设备版本 5.1 Lollipop

在 cmd 中运行“adb devices”命令给了我

List of devices attached
emulator-5554   device

所需的功能设置是

@BeforeClass
public void setUp() throws MalformedURLException
    DesiredCapabilities capabilities = new DesiredCapabilities();

    capabilities.setCapability("platformName","Android");
    capabilities.setCapability("platformVersion","5.1");
    capabilities.setCapability("deviceName","emulator-5554");
    capabilities.setCapability("app", path_to_apk);
    driver =  new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);


运行测试时的IDE错误输出:

org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [app=src//main//resources//test.apk, platformVersion=5.1, platformName=Android, deviceName=emulator-5554], required capabilities = Capabilities []
Build info: version: '3.3.0', revision: 'b526bd5b41', time: '2017-03-07 19:26:04 +0000'

我被困在这一点上,不知道该怎么办。

【问题讨论】:

请注意设备名称不是“emulator-5554” - 这是设备 udid。 设法通过使用 Selenium-Java 3.0.1 解决了这个问题 @jeffsia 有什么更新吗?你发现了吗? 【参考方案1】:

我无法像 OP 那样使用 selenium 3.0.1。我正在使用带有 appium 的硒网格。最终对我有用的是使用 appium@1.6.4-beta,它适用于最高 3.1.0 版本的 selenium。

【讨论】:

有趣。似乎我们必须考虑某些 appium 和 selenium 版本的组合以实现兼容性。就我而言,它是 Appium 1.6.3 和 Selenium Java Client 版本 3.0.1。【参考方案2】:

我在评论中提到,我最终使用了旧版本的 Selenium,以使所需的功能与 Appium 1.6.3 的预期相匹配。就我而言,它是 Selenium Java Client 3.0.1 + Appium 1.6.3。

【讨论】:

【参考方案3】:
org.openqa.selenium.SessionNotCreatedException:

只有当我们无法在 appium 和移动设备之间建立时才会发生上述异常。

apk 路径可能是错误的,因为它在日志中显示 app=src//main//resources//test.apk,但它应该是它存储的目录路径,例如 c://mobile//apk//test.apk,请更正它。

您还没有在 DesiredCapabilities 中提及 appPackageappActivity,如下所示。

// specify the application package that we copied from appium

    capabilities.setCapability("appPackage", "com.testapp");

    // specify the application activity that we copied from appium

    capabilities.setCapability("appActivity", ".HomeScreenActivity");

如果您已经在设备上安装了 .apk,则需要上述参数。在创建会话时包含这些功能总是好的。

如果它不适合你,请告诉我。

【讨论】:

以上是关于Appium 和虚拟 Android 设备所需的功能:SessionNotCreatedException 错误的主要内容,如果未能解决你的问题,请参考以下文章

(如何)Android虚拟设备可以使用本地计算机的互联网吗?

如何在 Mac OS 上设置 Appium 以在 Android 和 iOS 设备上运行来自 JAVA 类的自动化测试

AWS Device Farm上的Appium测试未按指定顺序执行

如何从 Appium 打开推送通知并阅读 Android/iOS 设备中的文本?

如何使用 appium 在移动应用中查找 xpath

Appium:java环境AndroidSDK环境