2015-04-17 49 views
0

我讀過一些教程在互聯網上,我不知道我是否做得很好。錯誤,當我嘗試執行selendroid命令

我寫了這個方法,當我點擊我的android應用程序的某個按鈕時,我希望我點擊這個按鈕將能夠打開android瀏覽器和acess google。

代碼:

package com.example.androidapp; 
 

 
import org.openqa.selenium.WebDriver; 
 
import org.openqa.selenium.remote.DesiredCapabilities; 
 
import org.openqa.selenium.remote.RemoteWebDriver; 
 

 
public class Sel { 
 
\t 
 
\t public void Trabalha(){ 
 
\t \t WebDriver driver = new RemoteWebDriver(DesiredCapabilities.android()); 
 
\t \t driver.get("http://google.com"); \t \t 
 
\t \t 
 
\t } 
 

 
}

這一步後,我把selendroid的.jar在我的項目的apk的同一目錄和我想這命令:

java -jar selendroid-standalone-0.15.0 

-with-dependencies.jar -app AndroidApp.apk

此命令後,我收到某些錯誤 - >

C:\Users\Cleiton\workspace\AndroidApp\bin>java -jar selendroid-standalone-0.15.0 
 
-with-dependencies.jar -app AndroidApp.apk 
 
abr 16, 2015 10:41:50 PM io.selendroid.standalone.SelendroidLauncher main 
 
INFORMAÃıES: ################# Selendroid ################# 
 
abr 16, 2015 10:41:50 PM io.selendroid.standalone.SelendroidLauncher main 
 
INFORMAÃıES: ################# Configuration in use ################# 
 
abr 16, 2015 10:41:50 PM io.selendroid.standalone.SelendroidLauncher main 
 
INFORMAÃıES: [email protected][ 
 
    port=4444 
 
    timeoutEmulatorStart=300000 
 
    supportedApps=[AndroidApp.apk] 
 
    verbose=false 
 
    emulatorPort=5560 
 
    deviceScreenshot=false 
 
    selendroidServerPort=8080 
 
    keystore=<null> 
 
    keystorePassword=<null> 
 
    keystoreAlias=<null> 
 
    emulatorOptions=<null> 
 
    keepEmulator=false 
 
    registrationUrl=<null> 
 
    proxy=<null> 
 
    serverHost=<null> 
 
    keepAdbAlive=false 
 
    maxSession=5 
 
    maxInstances=5 
 
    noWebViewApp=false 
 
    noClearData=false 
 
    sessionTimeoutSeconds=1800 
 
    forceReinstall=false 
 
    logLevel=ERROR 
 
    deviceLog=true 
 
    serverStartTimeout=20000 
 
    printHelp=false 
 
    serverStartRetries=5 
 
    folder=<null> 
 
] 
 
abr 16, 2015 10:41:50 PM io.selendroid.standalone.SelendroidLauncher launchServe 
 
r 
 
INFORMAÃıES: Starting Selendroid standalone on port 4444 
 
abr 16, 2015 10:41:50 PM io.selendroid.standalone.SelendroidLauncher launchServe 
 
r 
 
GRAVE: Error building server: Environment variable 'ANDROID_HOME' was not found! 
 

 
Exception in thread "main" io.selendroid.server.common.exceptions.SelendroidExce 
 
ption: Environment variable 'ANDROID_HOME' was not found! 
 
     at io.selendroid.standalone.android.AndroidSdk.androidHome(AndroidSdk.ja 
 
va:97) 
 
     at io.selendroid.standalone.android.AndroidSdk.platformToolsHome(Android 
 
Sdk.java:86) 
 
     at io.selendroid.standalone.android.AndroidSdk.aapt(AndroidSdk.java:39) 
 
     at io.selendroid.standalone.android.impl.DefaultAndroidApp.deleteFileFro 
 
mWithinApk(DefaultAndroidApp.java:107) 
 
     at io.selendroid.standalone.builder.SelendroidServerBuilder.deleteFileFr 
 
omAppSilently(SelendroidServerBuilder.java:135) 
 
     at io.selendroid.standalone.builder.SelendroidServerBuilder.resignApp(Se 
 
lendroidServerBuilder.java:144) 
 
     at io.selendroid.standalone.server.model.SelendroidStandaloneDriver.addT 
 
oAppsStore(SelendroidStandaloneDriver.java:121) 
 
     at io.selendroid.standalone.server.model.SelendroidStandaloneDriver.init 
 
ApplicationsUnderTest(SelendroidStandaloneDriver.java:155) 
 
     at io.selendroid.standalone.server.model.SelendroidStandaloneDriver.<ini 
 
t>(SelendroidStandaloneDriver.java:94) 
 
     at io.selendroid.standalone.server.SelendroidStandaloneServer.initialize 
 
SelendroidServer(SelendroidStandaloneServer.java:65) 
 
     at io.selendroid.standalone.server.SelendroidStandaloneServer.<init>(Sel 
 
endroidStandaloneServer.java:54) 
 
     at io.selendroid.standalone.SelendroidLauncher.launchServer(SelendroidLa 
 
uncher.java:65) 
 
     at io.selendroid.standalone.SelendroidLauncher.main(SelendroidLauncher.j 
 
ava:117) 
 

 
C:\Users\Cleiton\workspace\AndroidApp\bin>

------------- ------------修訂-------

在更新爲系統變量後,THEN一切正常。

我設法運行服務器!

但是現在,當我點擊調用函數「TRABALHA」的按鈕時,應用程序簡單地終止。

enter image description here

-----修訂------------

這是logcat的輸出時,應用程序崩潰。

04-21 16:40:53.602: E/AndroidRuntime(1092): FATAL EXCEPTION: main 
04-21 16:40:53.602: E/AndroidRuntime(1092): Process: com.example.androidapp, PID: 1092 
04-21 16:40:53.602: E/AndroidRuntime(1092): java.lang.NoClassDefFoundError: Failed resolution of: Lorg/openqa/selenium/remote/RemoteWebDriver; 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at com.example.androidapp.Sel.Trabalha(Sel.java:10) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at com.example.androidapp.MainActivity.onClick(MainActivity.java:48) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at android.view.View.performClick(View.java:4780) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at android.view.View$PerformClick.run(View.java:19866) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at android.os.Handler.handleCallback(Handler.java:739) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at android.os.Handler.dispatchMessage(Handler.java:95) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at android.os.Looper.loop(Looper.java:135) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at android.app.ActivityThread.main(ActivityThread.java:5257) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at java.lang.reflect.Method.invoke(Native Method) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at java.lang.reflect.Method.invoke(Method.java:372) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 
04-21 16:40:53.602: E/AndroidRuntime(1092): Caused by: java.lang.ClassNotFoundException: Didn't find class "org.openqa.selenium.remote.RemoteWebDriver" on path: DexPathList[[zip file "/data/app/com.example.androidapp-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
04-21 16:40:53.602: E/AndroidRuntime(1092):  ... 12 more 
04-21 16:40:53.602: E/AndroidRuntime(1092):  Suppressed: java.lang.ClassNotFoundException: org.openqa.selenium.remote.RemoteWebDriver 
04-21 16:40:53.602: E/AndroidRuntime(1092):   at java.lang.Class.classForName(Native Method) 
04-21 16:40:53.602: E/AndroidRuntime(1092):   at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
04-21 16:40:53.602: E/AndroidRuntime(1092):   at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
04-21 16:40:53.602: E/AndroidRuntime(1092):   at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
04-21 16:40:53.602: E/AndroidRuntime(1092):   ... 13 more 
04-21 16:40:53.602: E/AndroidRuntime(1092):  Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 
+1

您是否安裝了android SDK?你有一個指向根目錄的環境變量ANDROID_HOME嗎? (對我來說,根目錄是'C:\ Android SDK \ adt-bundle-windows-x86_64-20140321 \ sdk')。雖然我使用的是Android Studio,它可以爲我處理這一切。 –

+1

請檢查這個答案和評論。 http://stackoverflow.com/questions/28548638/execute-selenium-webdriver-script-on-android-phone/28549361#28549361 這將是一個漫長的設置第一次。如果它沒有澄清,讓我知道 – vins

+0

是的,我已經:D和我的android_home似乎是好的。我可以打開SDK管理器當我把「Android」放在Windows CMD –

回答

2
set ANDROID_HOME=C:\<installation location>\android-sdk-windows 
set PATH=%PATH%;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools 

嘗試通過CMD設置ANDROID_HOME,因爲我也有過同樣的問題,雖然在最初啓動服務器,但同時Getting Started with Selendroid他們給了一個鏈接來設置ANDROID_HOME變量,通過CMD設置它。

+0

我做到了,但我沒有成功。] –

+0

這部分(系統變量)被解決了。現在我能夠運行硒罐,但應用程序崩潰。 –

+0

你可以發佈你在logcat中遇到什麼錯誤,因爲你的應用崩潰了嗎? –

相關問題