From dcd8026204e4a080c07fc40840025643c15b80f9 Mon Sep 17 00:00:00 2001 From: Edward Jakubowski Date: Thu, 8 May 2014 08:56:38 -0400 Subject: [PATCH] Added VerifyElementPresent and VerifyElementNotPresent --- src/org/synthuse/CommandPopupMenu.java | 6 +++ src/org/synthuse/CommandProcessor.java | 14 +++++- src/org/synthuse/SynthuseDlg.java | 2 +- src/org/synthuse/commands/MainCommands.java | 48 ++++++++++++++++++--- 4 files changed, 62 insertions(+), 8 deletions(-) diff --git a/src/org/synthuse/CommandPopupMenu.java b/src/org/synthuse/CommandPopupMenu.java index 77cb2d4..46440d4 100644 --- a/src/org/synthuse/CommandPopupMenu.java +++ b/src/org/synthuse/CommandPopupMenu.java @@ -167,6 +167,12 @@ public class CommandPopupMenu extends JPopupMenu { CommandMenuItem mntmSetUpdateThreshold = new CommandMenuItem("setUpdateThreshold", 2, false); add(mntmSetUpdateThreshold); + CommandMenuItem mntmVerifyElementNotPresent = new CommandMenuItem("verifyElementNotPresent", 2); + add(mntmVerifyElementNotPresent); + + CommandMenuItem mntmVerifyElementPresent = new CommandMenuItem("verifyElementPresent", 2); + add(mntmVerifyElementPresent); + CommandMenuItem mntmWaitforclass = new CommandMenuItem("waitForClass", 2, false); add(mntmWaitforclass); diff --git a/src/org/synthuse/CommandProcessor.java b/src/org/synthuse/CommandProcessor.java index afea356..abef8e4 100644 --- a/src/org/synthuse/CommandProcessor.java +++ b/src/org/synthuse/CommandProcessor.java @@ -11,6 +11,7 @@ import java.awt.Point; import java.text.DecimalFormat; import java.util.concurrent.atomic.AtomicBoolean; +import javax.swing.JDialog; import javax.swing.JOptionPane; import org.synthuse.commands.*; @@ -126,7 +127,14 @@ public class CommandProcessor implements Runnable{ events.statusChanged("Script Execution " + forcedStr + " with " + scriptErrorCount + " error(s) in " + new DecimalFormat("#.###").format(seconds) + " seconds"); events.executionCompleted(); if (scriptErrorCount > 0 && !isQuiet) - JOptionPane.showMessageDialog(null, lastError); + { + JOptionPane optionPane = new JOptionPane(lastError); + JDialog dialog = optionPane.createDialog("Errors"); + dialog.setAlwaysOnTop(SynthuseDlg.config.isAlwaysOnTop()); + dialog.setVisible(true); + dialog.dispose(); + //JOptionPane.showMessageDialog(null, lastError); + } } public Object execute(String command, String[] args) { @@ -251,6 +259,10 @@ public class CommandProcessor implements Runnable{ return main.cmdSetTimeout(args); if (command.equals("setUpdateThreshold")) return main.cmdSetUpdateThreshold(args); + if (command.equals("verifyElementNotPresent")) + return main.cmdVerifyElementNotPresent(args); + if (command.equals("verifyElementPresent")) + return main.cmdVerifyElementPresent(args); if (command.equals("waitForTitle")) return main.cmdWaitForTitle(args); if (command.equals("waitForText")) diff --git a/src/org/synthuse/SynthuseDlg.java b/src/org/synthuse/SynthuseDlg.java index 389356c..4fefe13 100644 --- a/src/org/synthuse/SynthuseDlg.java +++ b/src/org/synthuse/SynthuseDlg.java @@ -72,7 +72,7 @@ public class SynthuseDlg extends JFrame { /** * */ - public static String VERSION_STR = "1.1.6"; + public static String VERSION_STR = "1.1.7"; public static String RES_STR_MAIN_ICON = "/org/synthuse/img/gnome-robots.png"; public static String RES_STR_REFRESH_IMG = "/org/synthuse/img/rapidsvn.png"; diff --git a/src/org/synthuse/commands/MainCommands.java b/src/org/synthuse/commands/MainCommands.java index 1d044fa..11d5d47 100644 --- a/src/org/synthuse/commands/MainCommands.java +++ b/src/org/synthuse/commands/MainCommands.java @@ -69,7 +69,7 @@ public class MainCommands extends BaseCommand { return false; long totalAttempts = (long) (CommandProcessor.WAIT_TIMEOUT_THRESHOLD / (CommandProcessor.XML_UPDATE_THRESHOLD * 1000)); long attemptCount = 0; - String xpath = "/EnumeratedWindows/win[@TEXT='" + WindowsEnumeratedXml.escapeXmlAttributeValue(args[0].toUpperCase()) + "']"; + String xpath = "/EnumeratedWindows/*[@TEXT='" + WindowsEnumeratedXml.escapeXmlAttributeValue(args[0].toUpperCase()) + "']"; WinPtr handle = findHandleWithXpath(xpath, true); if (!handle.isEmpty())// first test without a timeout return true; @@ -82,7 +82,9 @@ public class MainCommands extends BaseCommand { if (isProcessorStopped()) break; } - return handle != null; + if (handle.isEmpty()) + appendError("Error: command '" + getCurrentCommand() + "' failed to find element matching " + args[0]); + return (!handle.isEmpty()); } public boolean cmdWaitForText(String[] args) { @@ -103,7 +105,9 @@ public class MainCommands extends BaseCommand { if (isProcessorStopped()) break; } - return handle != null; + if (handle.isEmpty()) + appendError("Error: command '" + getCurrentCommand() + "' failed to find element matching " + args[0]); + return (!handle.isEmpty()); } public boolean cmdWaitForClass(String[] args) { @@ -111,7 +115,7 @@ public class MainCommands extends BaseCommand { return false; long totalAttempts = (long) (CommandProcessor.WAIT_TIMEOUT_THRESHOLD / (CommandProcessor.XML_UPDATE_THRESHOLD * 1000)); long attemptCount = 0; - String xpath = "//win[@CLASS='" + WindowsEnumeratedXml.escapeXmlAttributeValue(args[0].toUpperCase()) + "']"; + String xpath = "//[@CLASS='" + WindowsEnumeratedXml.escapeXmlAttributeValue(args[0].toUpperCase()) + "']"; WinPtr handle = findHandleWithXpath(xpath, true); if (!handle.isEmpty())// first test without a timeout return true; @@ -124,7 +128,9 @@ public class MainCommands extends BaseCommand { if (isProcessorStopped()) break; } - return handle != null; + if (handle.isEmpty()) + appendError("Error: command '" + getCurrentCommand() + "' failed to find element matching " + args[0]); + return (!handle.isEmpty()); } public boolean cmdWaitForVisible(String[] args) { @@ -144,7 +150,37 @@ public class MainCommands extends BaseCommand { if (isProcessorStopped()) break; } - return handle != null; + if (handle.isEmpty()) + appendError("Error: command '" + getCurrentCommand() + "' failed to find element matching " + args[0]); + return (!handle.isEmpty()); + } + + public boolean cmdVerifyElementNotPresent(String[] args) + { + if (!checkArgumentLength(args, 1)) + return false; + WinPtr handle = findHandleWithXpath(args[0], true); + if (!handle.isEmpty()) + { + appendError("Error: command '" + getCurrentCommand() + "' failed to NOT find element matching " + args[0]); + return false; + } + else + return true; + } + + public boolean cmdVerifyElementPresent(String[] args) + { + if (!checkArgumentLength(args, 1)) + return false; + WinPtr handle = findHandleWithXpath(args[0], true); + if (!handle.isEmpty()) + return true; + else + { + appendError("Error: command '" + getCurrentCommand() + "' failed to find element matching " + args[0]); + return false; + } } }