我正在使用Android级别为16的Android 4.1.2。
这是我的python代码:
def setUp(self):
"Setup for the test"
desired_caps = {}
desired_caps['automationName']='Selendroid'
desired_caps['browserName']=''
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.1.2'
desired_caps['deviceName'] = 'd65d04425101de'
# Returns abs path relative to this file and not cwd
desired_caps['app'] = '/home/karthik/appiumworkspace/tests/app-debug (2).apk'
desired_caps['appPackage'] = 'com.prueba.maverick'
desired_caps['app-activity'] = '.SplashActivity'
desired_caps['app-wait-activity'] = '.MainActivity'
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)`
python输出(错误): 它说thats-apk没有INTERNET权限。 Selendroid需要互联网许可才能继续
karthik@dkarnik2-Vostro-3558:~/appiumworkspace/appium-1.4.13/submodules/sample-code/examples/python$ python maverick.test.in.mobile.using.appium.py
test_record_the_audio (__main__.MaverickAndroidTests)
Test it clicks on Record button correctly ... ERROR
======================================================================
ERROR: test_record_the_audio (__main__.MaverickAndroidTests)
Test it clicks on Record button correctly
----------------------------------------------------------------------
Traceback (most recent call last):
File "maverick.test.in.mobile.using.appium.py", line 47, in setUp
self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
File "/usr/local/lib/python2.7/dist-packages/appium/webdriver/webdriver.py", line 36, in __init__
super(WebDriver, self).__init__(command_executor, desired_capabilities, browser_profile, proxy, keep_alive)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 87, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 141, in start_session
'desiredCapabilities': desired_capabilities,
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 201, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
WebDriverException: Message: A new session could not be created. (Original error: apk does not have INTERNET permissions. Selendroid needs internet permission to proceed, please check if you have <uses-permission android:name="android.**permission.INTERNET"/> in your AndroidManifest.xml)
----------------------------------------------------------------------
Ran 1 test in 0.242s
FAILED (errors=1)
*这是我在Appium中得到的:*
info: --> POST /wd/hub/session {"desiredCapabilities":{"deviceName":"d65d04425101de","automationName":"Selendroid","app-wait-activity":".MainActivity","browserName":"","appPackage":"com.prueba.maverick","platformVersion":"4.1.2","app-activity":".SplashActivity","platformName":"Android","app":"/home/karthik/appiumworkspace/tests/app-debug (2).apk"}}
info: Client User-Agent string: Python-urllib/2.7
info: [debug] The following desired capabilities were provided, but not recognized by appium. They will be passed on to any other services running on this server. : app-wait-activity, app-activity
info: [debug] No appActivity desired capability or server param. Parsing from apk.
info: [debug] Using local app from desired caps: /home/karthik/appiumworkspace/tests/app-debug (2).apk
info: [debug] Creating new appium session 32a66533-2ca7-4e7b-80e8-e12e6a24c774
info: [debug] Starting selendroid server
info: [debug] Getting Java version
info: Java version is: 1.7.0_95
info: [debug] Checking whether adb is present
info: [debug] Using adb from /home/karthik/selenium/android-sdk-linux/platform-tools/adb
info: [debug] Checking whether selendroid is built yet
info: [debug] Selendroid server exists!
info: [debug] Using fast reset? false
info: [debug] Preparing device for session
info: [debug] Checking whether app is actually present
info: Retrieving device
info: [debug] Trying to find a connected android device
info: [debug] Getting connected devices...
info: [debug] executing cmd: /home/karthik/selenium/android-sdk-linux/platform-tools/adb devices
info: [debug] 1 device(s) connected
info: Found device d65d04425101de
info: [debug] Setting device id to d65d04425101de
info: [debug] Waiting for device to be ready and to respond to shell commands (timeout = 5)
info: [debug] executing cmd: /home/karthik/selenium/android-sdk-linux/platform-tools/adb -s d65d04425101de wait-for-device
info: [debug] executing cmd: /home/karthik/selenium/android-sdk-linux/platform-tools/adb -s d65d04425101de shell "echo 'ready'"
info: [debug] Starting logcat capture
info: [debug] Checking whether aapt is present
info: [debug] Using aapt from /home/karthik/selenium/android-sdk-linux/build-tools/23.0.2/aapt
info: [debug] Checking if has internet permission from manifest.
info: [debug] executing cmd: /home/karthik/selenium/android-sdk-linux/build-tools/23.0.2/aapt dump badging "/home/karthik/appiumworkspace/tests/app-debug (2).apk"
info: [debug] Cleaning up appium session
error: Failed to start an Appium session, err was: Error: apk does not have INTERNET permissions. Selendroid needs internet permission to proceed, please check if you have <uses-permission android:name="android.**permission.INTERNET"/> in your AndroidManifest.xml
info: [debug] Error: apk does not have INTERNET permissions. Selendroid needs internet permission to proceed, please check if you have <uses-permission android:name="android.**permission.INTERNET"/> in your AndroidManifest.xml
at /home/karthik/.linuxbrew/lib/node_modules/appium/lib/devices/android/selendroid.js:217:10
at /home/karthik/.linuxbrew/lib/node_modules/appium/node_modules/appium-adb/lib/adb.js:1667:7
at ChildProcess.exithandler (child_process.js:193:7)
at emitTwo (events.js:100:13)
at ChildProcess.emit (events.js:185:7)
at maybeClose (internal/child_process.js:827:16)
at Socket.<anonymous> (internal/child_process.js:319:11)
at emitOne (events.js:90:13)
at Socket.emit (events.js:182:7)
at Pipe._onclose (net.js:475:12)
info: [debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: apk does not have INTERNET permissions. Selendroid needs internet permission to proceed, please check if you have <uses-permission android:name=\"android.**permission.INTERNET\"/> in your AndroidManifest.xml)","origValue":"apk does not have INTERNET permissions. Selendroid needs internet permission to proceed, please check if you have <uses-permission android:name=\"android.**permission.INTERNET\"/> in your AndroidManifest.xml"},"sessionId":null}
info: <-- POST /wd/hub/session 500 236.606 ms - 536 `
如何解决这个问题?
答案 0 :(得分:2)
正在测试的应用程序应该在AndroidManifest.xml
标记之外的代码中的<application>
文件中具有以下权限:
<uses-permission android:name="android.permission.INTERNET" />
从设计
下的http://appium.io/introduction.html?lang=en引用我们使用的供应商提供的框架是:
iOS:Apple的UIAutomation Android
4.2+:Google的UiAutomator Android
2.3+:Google的仪器。 (通过捆绑单独的项目Selendroid提供仪器支持)
因此,您正在测试的API级别和您使用的自动化类型会在appium尝试访问您的应用程序时产生差异。