diff --git a/src/main/java/JavaFXLibrary.java b/src/main/java/JavaFXLibrary.java index 8e9dd06..f56137c 100644 --- a/src/main/java/JavaFXLibrary.java +++ b/src/main/java/JavaFXLibrary.java @@ -124,7 +124,6 @@ public Object runKeyword(String keywordName, List args, Map kwargs) { // timeout already expired, catch exception and jump out retExcep.set(jfxte); throw jfxte; - } catch (RuntimeException e) { // catch exception and continue trying retExcep.set(e); @@ -142,6 +141,11 @@ public Object runKeyword(String keywordName, List args, Map kwargs) { } else if (e.getCause() instanceof JavaFXLibraryNonFatalException) { RobotLog.trace("JavaFXLibrary: Caught JavaFXLibrary NON-FATAL exception: \n" + Throwables.getStackTraceAsString(e)); throw e; + } else if (e.getCause() instanceof IllegalArgumentException) { + RobotLog.trace("JavaFXLibrary: Caught IllegalArgumentException: \n" + Throwables.getStackTraceAsString(e)); + throw new JavaFXLibraryNonFatalException("Illegal arguments for keyword '" + keywordName + "':\n" + + " ARGS: " + Arrays.toString(args.toArray()) + "\n" + + " KWARGS: " + Arrays.toString(kwargs.entrySet().toArray())); } else { RobotLog.trace("JavaFXLibrary: Caught JavaFXLibrary RUNTIME exception: \n" + Throwables.getStackTraceAsString(e)); throw e; diff --git a/src/main/java/javafxlibrary/utils/HelperFunctions.java b/src/main/java/javafxlibrary/utils/HelperFunctions.java index b932560..506c7ed 100644 --- a/src/main/java/javafxlibrary/utils/HelperFunctions.java +++ b/src/main/java/javafxlibrary/utils/HelperFunctions.java @@ -902,7 +902,7 @@ public static Object[] useMappedObjects(Object[] arr) { if (objectMap.containsKey(o)) { replaced[i] = objectMap.get(o); } else { - replaced[i] = arr[i]; + replaced[i] = checkForNullArgument(arr[i]); } } } @@ -924,7 +924,7 @@ public static List useMappedObjects(List list) { if (objectMap.containsKey(o)) { replaced.set(i, objectMap.get(o)); } else { - replaced.set(i, o); + replaced.set(i, checkForNullArgument(o)); } } } @@ -944,13 +944,21 @@ public static Map useMappedObjects(Map map) { if (objectMap.containsKey(o)) { replaced.put(key, objectMap.get(o)); } else { - replaced.put(key, o); + replaced.put(key, checkForNullArgument(o)); } } } return replaced; } + public static Object checkForNullArgument(Object o) { + if (o.getClass() == String.class && o.equals("")) { + return null; + } + return o; + } + + public static Object[] checkMethodArguments(Object[] arguments) { Object[] replaced = new Object[arguments.length]; for (int i = 0; i < arguments.length; i++) { diff --git a/src/test/robotframework/acceptance/FindTest.robot b/src/test/robotframework/acceptance/FindTest.robot index 10aa0ac..d954d68 100644 --- a/src/test/robotframework/acceptance/FindTest.robot +++ b/src/test/robotframework/acceptance/FindTest.robot @@ -207,6 +207,18 @@ Previous Query Returns Nothing In Chained Selector With Find All When failIfNotF ${msg} Run Keyword And Expect Error * Find All css=VBox css=ZBox Pane id=lime true Should Be Equal Find operation failed for query: "css=VBox css=ZBox Pane id=lime" ${msg} +Find With Nonvalid Root + [Tags] smoke negative + Set Test Application ${BOUNDS_APP} + ${msg} Run Keyword And Expect Error * Find xpath=//Rectangle[@width="75.0"] false not-a-valid-root + Should Start With ${msg} Illegal arguments for keyword 'find' + +Find All With Nonvalid Root + [Tags] smoke negative + Set Test Application ${BOUNDS_APP} + ${msg} Run Keyword And Expect Error * Find All xpath=//Rectangle[@width="75.0"] false not-a-valid-root + Should Start With ${msg} Illegal arguments for keyword 'findAll' + Find Labeled Node With Text [Tags] smoke Set Test Application javafxlibrary.testapps.TestWindowManagement