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 中提及 appPackage 和 appActivity,如下所示。
// 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测试未按指定顺序执行