Appium+python真机测试报错: Failed to start an Appium session,求解
配置:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.tools.sdkcontroller"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".activities.MainActivity"
android:label="@string/app_name"
android:launchMode="singleInstance"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activities.SensorActivity"
android:launchMode="singleInstance"
android:windowSoftInputMode="stateUnchanged"
android:label="@string/sensors_activity_title">
</activity>
<activity
android:name=".activities.MultiTouchActivity"
android:launchMode="singleInstance"
android:screenOrientation="portrait"
android:theme="@style/Theme.MultiTouch"
android:windowSoftInputMode="stateHidden">
</activity>
<service
android:name=".service.ControllerService"
android:description="@string/service_description"
android:icon="@drawable/ic_launcher" />
</application>
</manifest>
代码:
import os, time, unittest
from selenium import webdriver
PATH = lambda p: os.path.abspath(os.path.join(os.path.dirname(__file__), p))
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7.1.1'
desired_caps['deviceName'] = 'vivo X20A'
desired_caps['appPackage'] = 'cn.bevol.p'
desired_caps['appActivity'] = 'cn.bevol.p.activity.IndexActivity'
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
time.sleep(5)
运行报错信息
> error: Failed to start an Appium session, err was: Error: Command failed: C:\WINDOWS\system32\cmd.exe /s /c "D:\Appium-install\android-sdk-windows\tools\adb.exe -s e09f9050 shell "am start -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000 -n cn.bevol.p/cn.bevol.p.activity.IndexActivity""
> java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=cn.bevol.p/.activity.IndexActivity } from null (pid=4858, uid=2000) not exported from uid 10506
> at android.os.Parcel.readException(Parcel.java:1684)
> at android.os.Parcel.readException(Parcel.java:1637)
> at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:3266)
> at com.android.commands.am.Am.runStart(Am.java:635)
> at com.android.commands.am.Am.onRun(Am.java:388)
> at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
> at com.android.commands.am.Am.main(Am.java:121)
> at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
> at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)
>
> info: [debug] Error: Command failed: C:\WINDOWS\system32\cmd.exe /s /c "D:\Appium-install\android-sdk-windows\tools\adb.exe -s e09f9050 shell "am start -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000 -n cn.bevol.p/cn.bevol.p.activity.IndexActivity""
> java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=cn.bevol.p/.activity.IndexActivity } from null (pid=4858, uid=2000) not exported from uid 10506
> at android.os.Parcel.readException(Parcel.java:1684)
> at android.os.Parcel.readException(Parcel.java:1637)
> at android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:3266)
> at com.android.commands.am.Am.runStart(Am.java:635)
> at com.android.commands.am.Am.onRun(Am.java:388)
> at com.android.internal.os.BaseCommand.run(BaseCommand.java:51)
> at com.android.commands.am.Am.main(Am.java:121)
> at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
> at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)
>
> at ChildProcess.exithandler (child_process.js:751:12)
> at ChildProcess.emit (events.js:110:17)
> at maybeClose (child_process.js:1016:16)
> at Process.ChildProcess._handle.onexit (child_process.js:1088:5)
> info: [debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: Command failed: C:\\WINDOWS\\system32\\cmd.exe /s /c \"D:\\Appium-install\\android-sdk-windows\\tools\\adb.exe -s e09f9050 shell \"am start -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000 -n cn.bevol.p/cn.bevol.p.activity.IndexActivity\"\"\njava.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=cn.bevol.p/.activity.IndexActivity } from null (pid=4858, uid=2000) not exported from uid 10506\r\n\tat android.os.Parcel.readException(Parcel.java:1684)\r\n\tat android.os.Parcel.readException(Parcel.java:1637)\r\n\tat android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:3266)\r\n\tat com.android.commands.am.Am.runStart(Am.java:635)\r\n\tat com.android.commands.am.Am.onRun(Am.java:388)\r\n\tat com.android.internal.os.BaseCommand.run(BaseCommand.java:51)\r\n\tat com.android.commands.am.Am.main(Am.java:121)\r\n\tat com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)\r\n\tat com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)\r\n)","killed":false,"code":1,"signal":null,"cmd":"C:\\WINDOWS\\system32\\cmd.exe /s /c \"D:\\Appium-install\\android-sdk-windows\\tools\\adb.exe -s e09f9050 shell \"am start -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000 -n cn.bevol.p/cn.bevol.p.activity.IndexActivity\"\"","origValue":"Command failed: C:\\WINDOWS\\system32\\cmd.exe /s /c \"D:\\Appium-install\\android-sdk-windows\\tools\\adb.exe -s e09f9050 shell \"am start -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000 -n cn.bevol.p/cn.bevol.p.activity.IndexActivity\"\"\njava.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=cn.bevol.p/.activity.IndexActivity } from null (pid=4858, uid=2000) not exported from uid 10506\r\n\tat android.os.Parcel.readException(Parcel.java:1684)\r\n\tat android.os.Parcel.readException(Parcel.java:1637)\r\n\tat android.app.ActivityManagerProxy.startActivityAsUser(ActivityManagerNative.java:3266)\r\n\tat com.android.commands.am.Am.runStart(Am.java:635)\r\n\tat com.android.commands.am.Am.onRun(Am.java:388)\r\n\tat com.android.internal.os.BaseCommand.run(BaseCommand.java:51)\r\n\tat com.android.commands.am.Am.main(Am.java:121)\r\n\tat com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)\r\n\tat com.android.internal.os.RuntimeInit.main(RuntimeInit.java:262)\r\n"},"sessionId":null}
> info: <-- POST /wd/hub/session 500 9459.433 ms - 2667