2016-08-10 1 views
0

Ich versuche, Test-Klasse in Android schreiben. Aber es wirft einen Fehler wie unten auf. Er stürzt auf der Linie, die "Treiber = new RemoteWebDriver (neue URL" startet Wie kann ich das löse ich bei der Prüfung neu bin Sorry, wenn es einfach ist,Android-Test-Klasse schlägt mit Fehler java.lang.ExceptionInInitializerError

Testklasse:.?..

public class ExampleUnitTest { 

     WebDriver driver; 

     @BeforeTest 
     public void setUp() throws MalformedURLException { 
      DesiredCapabilities capabilities = new DesiredCapabilities(); 
      capabilities.setCapability("deviceName", "Sony Xperia Z - 4.3 - API 18 - 1080x1920"); 
      capabilities.setCapability(CapabilityType.BROWSER_NAME, "Android"); 
      capabilities.setCapability(CapabilityType.VERSION, "4.3"); 
      capabilities.setCapability("platformName", "Android"); 
      capabilities.setCapability("appPackage", "com.android.calculator2"); 
      capabilities.setCapability("appActivity", "com.android.calculator2.Calculator"); 
      driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 
      driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 
     } 

     @Test 
     public void Sum() { 
      driver.findElements(By.xpath("//android.widget.Button")).get(0).click(); 

      driver.findElement(By.name("2")).click();  
      driver.findElement(By.name("+")).click();  
      driver.findElement(By.name("5")).click(); 
      driver.findElement(By.name("=")).click(); 


      String result = driver.findElement(By.className("android.widget.EditText")).getText(); 
      System.out.println("Number sum result is : " + result); 

     } 

     @AfterTest 
     public void End() { 
      driver.quit(); 
     } 
    } 

Fehlerausgang:

java.lang.ExceptionInInitializerError 
     at org.apache.http.conn.ssl.SSLSocketFactory.<clinit>(SSLSocketFactory.java:151) 
     at org.openqa.selenium.remote.HttpCommandExecutor.getClientConnectionManager(HttpCommandExecutor.java:94) 
     at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:112) 
     at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:89) 
     at com.moduletry.dev4.appiumsimpletest1.ExampleUnitTest.setUp(ExampleUnitTest.java:50) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85) 
     at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:510) 
     at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:211) 
     at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138) 
     at org.testng.TestRunner.beforeRun(TestRunner.java:647) 
     at org.testng.TestRunner.run(TestRunner.java:615) 
     at org.testng.SuiteRunner.runTest(SuiteRunner.java:357) 
     at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352) 
     at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310) 
     at org.testng.SuiteRunner.run(SuiteRunner.java:259) 
     at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
     at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
     at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185) 
     at org.testng.TestNG.runSuitesLocally(TestNG.java:1110) 
     at org.testng.TestNG.run(TestNG.java:1018) 
     at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72) 
     at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:122) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 
    Caused by: java.lang.RuntimeException: Stub! 
     at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:14) 
     at org.apache.http.conn.ssl.AbstractVerifier.<init>(AbstractVerifier.java:60) 
     at org.apache.http.conn.ssl.AllowAllHostnameVerifier.<init>(AllowAllHostnameVerifier.java:43) 
     at org.apache.http.conn.ssl.AllowAllHostnameVerifier.<clinit>(AllowAllHostnameVerifier.java:45) 
     ... 31 more 

AKTUALISIERT nach try - catch-Block:

try { 
     driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 
    }catch (ExceptionInInitializerError error){ 
     System.out.println(error.getCause()); 
     System.out.println(error.getMessage()); 
     System.out.println(error.getLocalizedMessage()); 
     System.out.println(error.getStackTrace().toString()); 

    } 

Ausgang:

java.lang.RuntimeException: Stub! 
null 
null 
[Ljava.lang.StackTraceElement;@7f2502bc 

java.lang.NullPointerException 
    at com.moduletry.dev4.appiumsimpletest1.ExampleUnitTest.setUp(ExampleUnitTest.java:60) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85) 
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:510) 
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:211) 
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138) 
    at org.testng.TestRunner.beforeRun(TestRunner.java:647) 
    at org.testng.TestRunner.run(TestRunner.java:615) 
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:357) 
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:352) 
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:310) 
    at org.testng.SuiteRunner.run(SuiteRunner.java:259) 
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1110) 
    at org.testng.TestNG.run(TestNG.java:1018) 
    at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72) 
    at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:122) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 
+0

, dass ein Teil Block in einem Versuch setzen ... Es ist nicht in der Lage zu der URL verbinden welchem ​​Grund auch immer – Kushan

+0

Es ist mir einen detaillierten Fehler geben tut. – hkaraoglu

+0

Sorry @Revenge Kumpel kann es hundert Gründe geben, warum Ihr Socket nicht verbindet ... im Catch-Block machen Sie ein Log.e (Tag, Nachricht, throwable Ausnahme), um den detaillierten Fehler-Stack zu geben .... – Kushan

Antwort

0

Sie 50 Ruf nicht so äußern kann nicht sein, und dies könnte nicht eine Antwort geben! java.lang.ExceptionInInitializerError hat mich überlegt, ob das Problem sein könnte, dass Sie versuchen, die URL innerhalb der neuen Objekterstellung zu initialisieren. Vielleicht möchten Sie versuchen, die URL zu initialisieren und sie dann innerhalb der Objekterstellung zu übergeben?

Oder kann das Problem in RemoteWebDriver sein? vielleicht gibt es ein Objekt, das dort nicht initialisiert ist?

Documenta sagt:

Signale, die eine unerwartete Ausnahme in einem statischen Initialisierer aufgetreten ist. Ein ExceptionInInitializerError wird ausgelöst, um anzuzeigen, dass während der Evaluierung eines statischen Initialisierers oder des Initialisierers für eine statische Variable eine Ausnahmebedingung aufgetreten ist.

https://docs.oracle.com/javase/7/docs/api/java/lang/ExceptionInInitializerError.html

+0

ja @ER H, das ist genau das, was der Fehler ist ... Es passiert, wenn eine Ausnahme auftritt beim Versuch, ein Objekt zu initialisieren – Kushan

+0

Kann es ein Problem mit 127.0.0.1 (localhost) – hkaraoglu

+0

sehr möglich .... versuchen Sie die Verbindung in Ihrem Browser. Auch wenn es ein Android-Gerät ist, wird es nicht direkt mit localhost verbinden ... Sie müssen Ihren Port weiterleiten und geben Sie die IP-Adresse Ihres PCs anstelle von 127.0.0.1 .... – Kushan

0

Das Problem geschieht als Buchse ist keine Ausnahme in Ihrem Initialisierungsblocks öffnen und zu werfen.

Gründe für eine Buchse können mehrere sein nicht anschließen, am häufigsten sind:

1) Ihr Port nicht erreichbar sein könnte

2) Ihr Server möglicherweise nach unten

3) Wenn es ein tatsächliches ist Gerät muss es sich im selben Netzwerk wie Ihr localhost befinden. Auch wird es nicht möglich sein, direkt auf den lokalen Host ping, wird es an Ihren PC/Laptop angeschlossen werden müssen, und Sie sollten die IPv4-Adresse Ihres PCs

zB bieten: ipconfig zeigt PC-Adresse: 192.168.149.8

Dann wird Ihre URL http://192.168.149.8:yourPortNo/yoururl

4 sein) der Hafen hat in Ihrem Modem/Router an die IP-Adresse Ihres PC weitergeleitet werden für sie Anfragen von Ihrem Handy auf den PC umgeleitet werden ....

sind die kompletten Tutorial für die Einrichtung Ihres localhost für den Zugriff über die ganze Welt:

http://mehtadhaval.blogspot.in/2012/03/turn-your-pc-into-web-server-and-host.html

es folgt auf den Punkt der Port-Weiterleitung, wenn Sie in der Ausrichtung der Seite nicht interessiert sind .. .. wird Port-Forwarding mit verschiedenen Routern variieren ..

Check für Grund, warum ur uRL fehlschlägt: How can I access my localhost from my Android device?

Ziemlich sicher, dass das Problem Ihrer Initialisierung der Remote ist w eb-Treiber:

es auf diese Weise nutzen und versuchen:

// Get a handle to the driver. This will throw an exception 
// if a matching driver cannot be located 
WebDriver driver = new RemoteWebDriver(capabilities); 


// And now use it after getting the handler first... 
driver.get("http://127.0.0.1:4723/wd/hub"); 
+0

Auch Sie werden muss deine IP jedesmal ändern, wenn die IP deines PCs sich ändert .... – Kushan

+0

Wenn ich 127.0.0.1 schreibe, ist es nicht erreichbar. Muss ich einen Server wie Apache installieren? – hkaraoglu

+0

ja, tomcat/apache/xamp/wamp etc ... Wie gesagt, die Weiterleitung Ihres Ports an die IP Ihres PCs ist der größte Schritt ... gefolgt von der Verwendung dieser IP anstelle von 127.0.0.1 – Kushan

Verwandte Themen