2017-02-01 3 views
-3

Ich stoße auf ein unerwartetes Problem mit einem meiner Skripte.ArrayIndexOutOfBoundsException: 1 beim Aufrufen von getWindowHandles()

Ich habe eine Anwendung, die Nachrichten auf einer Reihe von verschiedenen Ebenen wie einer Organisationsebene und Ebenen tiefer in der Organisation veröffentlichen kann. Abhängig von Ihrem Beruf können nur bestimmte Personen einen Nachrichtenartikel auf der Organisationsebene veröffentlichen.

Ich habe die Skripte auf dieser Ebene geschrieben und sie alle funktionieren.

Ich kopierte die Skripte und änderte sie leicht, um die Nachrichten auf einer niedrigeren Ebene zu veröffentlichen, und hier bin ich scheinbar in Schwierigkeiten geraten. Ein bestimmtes Skript fügt dem Nachrichtenartikel ein Bild hinzu, und dazu müssen Sie eine Reihe von modalen Dialogfenstern bearbeiten. Dieser Workflow ist identisch mit der Organisationsebene.

Jedoch, wenn ich das Skript auf der unteren Ebene laufen bekomme ich einen Fehler in dem es heißt:

at com.desire2learn.dev.pages.CreateItemNewsPage.get_window_ids(CreateItemNewsPage.java:338) 
at com.desire2learn.dev.tests.NewsItemsUnitLevelTest.publish_news_with_image(NewsItemsUnitLevelTest.java:379) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) 
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) 
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) 
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) 
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 
at org.junit.runners.ParentRunner.run(ParentRunner.java:363) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) 
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 

Der Code ist es auf die patzt folgende:

java.lang.ArrayIndexOutOfBoundsException: 1 

Die Stacktrace ist wie folgt :

Es stürzt auf window2.

Die gleiche Methode funktioniert jedoch auf der Ebene der Organisation. Ich merke auch, dass es sagt, es gibt 2 verschiedene Fenster auf org Ebene:

2 verschiedene Fenster: [CDwindow-13376ec5-43ac-4668-a2f9-50660e3b09cf, CDwindow-d3e9e6eb-954a-4bf8-BA28-b30049ed85d8

]

auch wenn ich auf der Einheitenebene debuggen iGet die folgenden:

2 verschiedene Fenster: [CDwindow-13376ec5-43ac-4668-a2f9-50660e3b09cf, CDwindow-d3e9e6eb-954a-4bf8 -ba28-b30049ed85d8]

Beim Ausführen des Skripts bekomme ich nur 1 eindeutiges Fenster, aber ... sehr seltsam.

Es verblüfft mich. Kann mir jemand einen Zeiger geben oder mache ich hier nur etwas Dummes?

UPDATE

änderte ich eine Konfiguration in der Anwendung einstellen, der steuert, ob Pop-ups als modal oder nicht modal Popups angezeigt werden, und es scheint, das Problem zu beheben. Das Popup zeigt jedoch immer noch an, dass es sich um NonModalDialog handelt. Es scheint also, dass sich nichts geändert hat. Außer das Skript funktioniert nicht, wenn das Element conf deaktiviert ist und funktioniert, wenn es deaktiviert ist.

+2

Sie erhalten einen Fehler, weil der resultierende Satz nur ein Element enthält und Sie versuchen, den zweiten zu erhalten. – Chocksmith

+0

Ja, das habe ich gerade herausgefunden. Ich habe 'code \t \t \t System.out.println (AllWindowHandles.size() +" distinct windows: "+ AllWindowHandles);' und es sagt auf der Organisationsebene gibt es 2 verschiedene Fenster, aber auf der unteren Ebene gibt es nur 1 unterschiedliches Fenster. Ich werde die Frage bearbeiten, um dies zu berücksichtigen. Aber ich habe die Fenster-IDs auf der unteren Ebene überprüft und sie scheinen einzigartig zu sein. – tarquin

Antwort

0

Bitte ignorieren Sie diese Frage Ich habe es gelöst. Das Problem war mit modalen und nicht modalen Fenstern und mein Skript wurde für nicht modale Popups konfiguriert. Ich konnte nicht sehen, dass die Skripte, die ich in einem anderen Teil der Anwendung ausgeführt habe, für modale Dialoge konfiguriert worden waren, die mein Skript dabei unterbrachen.

Appos für die Verschwendung der Völker Zeit auf diese.

+0

Keine Notwendigkeit, sich zu entschuldigen. Beantworten Sie einfach Ihre eigene Frage, wenn Sie es gelöst haben und akzeptieren Sie es, damit andere Leute mit dem gleichen Problem wissen, wie man es löst. –

Verwandte Themen