Selendroid Python ActivityNotFound异常
我正在学习如何使用selendroid在Python中自动化移动应用程序 我紧随其后,成功地让移动网络模拟开始工作 但是我在使用本机应用程序示例时遇到了问题 我的目标是能够测试instagram应用程序 以下是我遵循的步骤:Selendroid Python ActivityNotFound异常,python,selenium,android-activity,selendroid,Python,Selenium,Android Activity,Selendroid,我正在学习如何使用selendroid在Python中自动化移动应用程序 我紧随其后,成功地让移动网络模拟开始工作 但是我在使用本机应用程序示例时遇到了问题 我的目标是能够测试instagram应用程序 以下是我遵循的步骤: 我从 并将其安装在BlueStacks模拟器上 接下来,我以apk文件作为应用程序参数启动selenium独立服务器 java -jar selendroid-standalone-0.17.0-with-dependencies.jar -aut H:\PDS\andr
java -jar selendroid-standalone-0.17.0-with-dependencies.jar -aut H:\PDS\andriod\com.instagram.android-7.9.2-APK4Fun.com.apk
{
status: 0,
value: {
supportedApps: [
{
appId: "io.selendroid.androiddriver:0.17.0",
mainActivity: "io.selendroid.androiddriver.WebViewActivity",
basePackage: "io.selendroid.androiddriver"
},
{
appId: "com.instagram.android:7.9.2",
mainActivity: "com.instagram.android.activity.MainTabActivity",
basePackage: "com.instagram.android"
}
],
os: {
arch: "amd64",
name: "Windows 8.1",
version: "6.3"
},
build: {
browserName: "selendroid",
version: "0.17.0"
},
supportedDevices: [
{
platformVersion: "23",
emulator: true,
apiTargetType: "google",
avdName: "Nexus_5_API_23_x86"
}
]
}
}
这应该意味着一切都很好。我已识别我的设备,并且已加载apk文件,并识别了MainActivity# initiate the driver
driver = webdriver.Remote(desired_capabilities=webdriver.DesiredCapabilities.ANDROID)
# switch to native app
driver.switch_to.window("NATIVE_APP")
try:
# try to start the MainTabActivity
driver.get("and-activity://com.instagram.android.activity.MainTabActivity")
finally:
driver.quit()
当我执行脚本时,出现以下错误:
Traceback (most recent call last):
File "F:\Program Files (x86)\JetBrains\PyCharm 5.0\helpers\pydev\pydevd.py", line 2403, in <module>
globals = debugger.run(setup['file'], None, None, is_module)
File "F:\Program Files (x86)\JetBrains\PyCharm 5.0\helpers\pydev\pydevd.py", line 1794, in run
launch(file, globals, locals) # execute the script
File "H:/PDS/BNP/bots/xexamples/connect_to_phone.py", line 12, in <module>
driver.get("and-activity://com.instagram.android.activity.MainTabActivity")
File "H:\program files\Anaconda\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 213, in get
self.execute(Command.GET, {'url': url})
File "H:\program files\Anaconda\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 201, in execute
self.error_handler.check_response(response)
File "H:\program files\Anaconda\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 181, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: CATCH_ALL: android.content.ActivityNotFoundException: Unable to find explicit activity class {io.selendroid.androiddriver/com.instagram.android.activity.MainTabActivity}; have you declared this activity in your AndroidManifest.xml?
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1723)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1511)
at android.app.ContextImpl.startActivity(ContextImpl.java:1039)
at android.app.ContextImpl.startActivity(ContextImpl.java:1021)
at io.selendroid.server.ServerInstrumentation.startActivity(ServerInstrumentation.java:77)
at io.selendroid.server.model.SelendroidNativeDriver.get(SelendroidNativeDriver.java:115)
at io.selendroid.server.model.DefaultSelendroidDriver.get(DefaultSelendroidDriver.java:522)
at io.selendroid.server.handler.OpenUrl.safeHandle(OpenUrl.java:38)
at io.selendroid.server.handler.SafeRequestHandler.handle(SafeRequestHandler.java:86)
at io.selendroid.server.AndroidServlet.handleRequest(AndroidServlet.java:264)
at io.selendroid.server.common.BaseServlet.handleHttpRequest(BaseServlet.java:67)
at io.selendroid.server.common.http.ServerHandler.channelRead(ServerHandler.java:53)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
at io.netty.handler.traffic.AbstractTrafficShapingHandler.channelRead(AbstractTrafficShapingHandler.java:223)
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.processSelectedKeysPlain(NioEventLoop.java:430)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:384)
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:841)
回溯(最近一次呼叫最后一次):
文件“F:\Program Files(x86)\JetBrains\PyCharm 5.0\helpers\pydev\pydevd.py”,第2403行,在
globals=debugger.run(setup['file'],None,None,is_模块)
文件“F:\Program Files(x86)\JetBrains\PyCharm 5.0\helpers\pydev\pydevd.py”,第1794行,正在运行
启动(文件、全局、局部)#执行脚本
文件“H:/PDS/BNP/bots/xexamples/connect_to_phone.py”,第12行,在
司机,快去-activity://com.instagram.android.activity.MainTabActivity")
get中的文件“H:\program files\Anaconda\lib\site packages\selenium\webdriver\remote\webdriver.py”,第213行
self.execute(Command.GET,{'url':url})
文件“H:\program files\Anaconda\lib\site packages\selenium\webdriver\remote\webdriver.py”,第201行,执行
self.error\u handler.check\u响应(响应)
文件“H:\program files\Anaconda\lib\site packages\selenium\webdriver\remote\errorhandler.py”,第181行,在check\u响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.WebDriverException:消息:CATCH_ALL:android.content.ActivityNotFoundException:找不到显式活动类{io.selendroid.androiddriver/com.instagram.android.activity.MainTabActivity};您是否在AndroidManifest.xml中声明了此活动?
在android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1723)中
位于android.app.Instrumentation.execStartActivity(Instrumentation.java:1511)
在android.app.ContextImpl.startActivity(ContextImpl.java:1039)
在android.app.ContextImpl.startActivity(ContextImpl.java:1021)
位于io.selendroid.server.ServerInstrumentation.startActivity(ServerInstrumentation.java:77)
位于io.selendroid.server.model.SelendroidNativeDriver.get(SelendroidNativeDriver.java:115)
位于io.selendroid.server.model.DefaultSelendroidDriver.get(DefaultSelendroidDriver.java:522)
位于io.selendroid.server.handler.OpenUrl.safeHandle(OpenUrl.java:38)
位于io.selendroid.server.handler.SafeRequestHandler.handle(SafeRequestHandler.java:86)
位于io.selendroid.server.AndroidServlet.handleRequest(AndroidServlet.java:264)
位于io.selendroid.server.common.BaseServlet.handleHttpRequest(BaseServlet.java:67)
位于io.selendroid.server.common.http.ServerHandler.channelRead(ServerHandler.java:53)
位于io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
位于io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
位于io.netty.handler.traffic.AbstractTrafficShapingHandler.channelRead(AbstractTrafficShapingHandler.java:223)
位于io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
位于io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
位于io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
位于io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
位于io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
位于io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163)
位于io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:148)
位于io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
位于io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319)
位于io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787)
位于io.netty.channel.nio.AbstractNioByteChannel$niobyteensafe.read(AbstractNioByteChannel.java:125)
位于io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511)
位于io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:430)
位于io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:384)
位于io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354)
位于io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116)
位于io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137)
运行(Thread.java:841)
它抛出ActivityNotFoundException错误,并询问我是否已在AndroidManifest.xml中声明此活动- 如何检查AndroidManifest中是否声明了某些内容李>
- 如果某物未申报,我如何申报?(安装应用程序不应该自动将其放入Android清单吗?)
- 我在剧本里做错什么了吗
- 使用Bluestack是否与问题有关
apktool
检查AndroidManifest中的内容。主活动也在selendroid服务器日志中指定,就在您启动它的时候
Unable to find explicit activity class {io.selendroid.androiddriver/com.instagram.android.activity.MainTabActivity}; have you declared this activity in your AndroidManifest.xml?