首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Selendroid选择仿真器

使用Selendroid选择仿真器
EN

Stack Overflow用户
提问于 2014-09-30 22:00:16
回答 2查看 1.8K关注 0票数 0

我尝试在运行Selendroid时选择仿真器,并发现此标志

-emulatorPort“指定开始运行仿真器的端口号。”

代码语言:javascript
复制
List of devices attached 
emulator-5554   device
emulator-5558   device

因为我有两个模拟器在运行,所以我想在运行测试时选择其中一个。因此,我在启动selendroid时使用该标志。

代码语言:javascript
复制
java -jar selendroid-standalone-0.11.0-with-dependencies.jar -app app.apk -emulatorPort 5554

我所写的测试代码是这样开始的

代码语言:javascript
复制
SelendroidCapabilities capa = new SelendroidCapabilities("app.package.name:1.0);
capa.setCapability(SelendroidCapabilities.EMULATOR, true);

driver = new SelendroidDriver(capa);

但是现在当我运行我的测试时它崩溃了

代码语言:javascript
复制
INFO: executing command: /Applications/Android/platform-tools/adb shell pm clear app.package.name
io.selendroid.exceptions.ShellCommandException: An error occured while executing shell command: /Applications/Android/platform-tools/adb shell pm clear app.package.name
    at io.selendroid.io.ShellCommand.exec(ShellCommand.java:49)
    at io.selendroid.android.impl.AbstractDevice.executeCommand(AbstractDevice.java:176)
    at io.selendroid.android.impl.AbstractDevice.executeCommand(AbstractDevice.java:171)
    at io.selendroid.android.impl.AbstractDevice.clearUserData(AbstractDevice.java:199)
    at io.selendroid.server.model.DeviceStore.release(DeviceStore.java:81)
    at io.selendroid.server.model.SelendroidStandaloneDriver.createNewTestSession(SelendroidStandaloneDriver.java:245)
    at io.selendroid.server.handler.CreateSessionHandler.handle(CreateSessionHandler.java:42)
    at io.selendroid.server.SelendroidServlet.handleRequest(SelendroidServlet.java:143)
    at io.selendroid.server.BaseServlet.handleHttpRequest(BaseServlet.java:67)
    at io.selendroid.server.http.ServerHandler.channelRead(ServerHandler.java:50)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163)
    at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:148)
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787)
    at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:125)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
    at java.lang.Thread.run(Thread.java:745)
Caused by: io.selendroid.exceptions.ShellCommandException: error: more than one device and emulator
error: more than one device and emulator

看起来id没有使用"-s模拟器-5554“选择正确的模拟器,这是一个错误还是我完全误解了标志"-emulatorPort”。如果我关闭其中一个模拟器,一切都会正常工作。

或者我必须使用Selendroid Grid,对于我正在尝试做的事情来说,这似乎是一种过度的杀伤力。

EN

回答 2

Stack Overflow用户

发布于 2014-12-03 20:43:32

正如emulatorPort标志的描述所说,它用于指定新产生的仿真器的端口,而不是从已经运行的仿真器中进行选择。要从已经运行的仿真器中进行选择,请使用类似于

代码语言:javascript
复制
capa.setSerial("emulator-5554");

将5554替换为所需模拟器的端口号。

票数 1
EN

Stack Overflow用户

发布于 2014-11-07 17:07:35

在您的脚本中使用以下代码:

代码语言:javascript
复制
DesiredCapabilities capa=DesiredCapabilities.android();
capa.setCapability(SelendroidCapabilities.EMULATOR, true);
capa.setCapability(SelendroidCapabilities.ANDROID_TARGET, DeviceTargetPlatform.ANDROID18);
SelendroidDriver driver = new SelendroidDriver(capa);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26122769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档