Selendroid服务器无法在设备上启动:权限拒绝:启动检测

时间:2015-06-12 07:54:29

标签: android selendroid

看看使用Selendroid自动化我们的Android设备测试。由于我刚刚进入研究阶段,我正在使用从他们的网站下载的selendroid-test-app。

我最近买了一台新机器。我的代码和设置在前一个上运行得很好。

我的JAVA_HOME设置为:C:\Program Files\Java\jdk1.8.0_45 我的ANDROID_HOME是C:\Program Files (x86)\Android\android-sdk 我通过在本地目录的控制台中运行以下命令来启动selendroid独立版:

java -jar selendroid-standalone-0.15.0-with-dependencies.jar -app selendroid-test-app-0.15.0.apk

这标志着apk很好:

INFO: Executing shell command: C:\Program Files\Java\jdk1.8.0_45\bin\jarsigner.exe -sigalg MD5withRSA -digestalg SHA1 -signedjar c:\SeleniumDrivers\resigned-selendroid-test-app-0.15.0.apk -storepass android -keystore C:\Users\rekab\.android\debug.keystore c:\SeleniumDrivers\selendroid-test-app-0.15.0.apk androiddebugkey
Jun 12, 2015 8:16:14 AM io.selendroid.standalone.io.ShellCommand exec
INFO: Shell command output
-->
jar signed.

然后我从Visual Studio(C#)开始测试:

DesiredCapabilities caps = DesiredCapabilities.Android();
caps.SetCapability("browserName", "selendroid");
caps.SetCapability("aut", "io.selendroid.testapp:0.15.0");  

TouchCapableRemoteWebDriver driver = new TouchCapableRemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), caps);

TouchCapableRemoteWebDriver是实现IHasTouchScreen的RemoteWebDriver的包装。

创建驱动程序后,手机上安装了selendroid-test-app:

INFO: Executing shell command: C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe -s FA34HW903620 install -r c:\SeleniumDrivers\resigned-selendroid-test-app-0.15.0.apk
Jun 12, 2015 8:17:52 AM io.selendroid.standalone.io.ShellCommand exec
INFO: Shell command output
-->
pkg: /data/local/tmp/resigned-selendroid-test-app-0.15.0.apk
Success
rm failed for -f, No such file or directory
3560 KB/s (511417 bytes in 0.140s)
<--
Jun 12, 2015 8:17:53 AM io.selendroid.standalone.io.ShellCommand exec
INFO: Executing shell command: C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe -s FA34HW903620 shell pm list packages io.selendroid.io.selendroid.testapp
Jun 12, 2015 8:17:54 AM io.selendroid.standalone.io.ShellCommand exec
INFO: Shell command output
-->
package:io.selendroid.io.selendroid.testapp
<--

但是,当它启动检测时,我得到一个例外:

INFO: Executing shell command: C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe -s FA34HW903620 shell am instrument -e main_activity io.selendroid.testapp.HomeScreenActivity -e server_port 8080 io.selendroid.io.selendroid.testapp/io.selendroid.server.ServerInstrumentation
Jun 12, 2015 8:17:55 AM io.selendroid.standalone.io.ShellCommand exec
INFO: Shell command output
-->
java.lang.SecurityException: Permission Denial: starting instrumentation ComponentInfo{io.selendroid.io.selendroid.testapp/io.selendroid.server.ServerInstrumentation} from pid=26099, uid=26099 not allowed because package io.selendroid.io.selendroid.testapp does not have a signature matching the target io.selendroid.testapp
        at android.os.Parcel.readException(Parcel.java:1430)
        at android.os.Parcel.readException(Parcel.java:1384)
        at android.app.ActivityManagerProxy.startInstrumentation(ActivityManagerNative.java:2839)
        at com.android.commands.am.Am.runInstrument(Am.java:615)
        at com.android.commands.am.Am.run(Am.java:118)
        at com.android.commands.am.Am.main(Am.java:81)
        at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
        at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:257)
        at dalvik.system.NativeStart.main(Native Method)
<--
显然,测试无法启动。出了什么问题?即使使用新机器,这也一直在运行,直到我从手机上卸载应用程序并再次运行测试。它现在重新安装,但手机上的服务器无法启动?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

问题是,手机上的应用程序是使用旧机器上的密钥签名的应用程序selendroid,而测试的应用程序是使用在新机器上生成的密钥签名而且这两个不匹配。

解决方案:从手机中卸载应用selendroidtested app,selendroid将使用相同的密钥对其进行安装。