diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereIdGenerator.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereIdGenerator.java
index 90425dbb60..13fde649e4 100644
--- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereIdGenerator.java
+++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereIdGenerator.java
@@ -58,7 +58,14 @@ public class AdempiereIdGenerator implements IdGenerator {
.append("=\'").append(attribute).append("']");
}
} else {
- locatorBuilder.append("$").append(prefix);
+ if (prefix.indexOf(" ") > 0) {
+ String widgetName = getWidgetName(comp.getWidgetClass());
+ locatorBuilder.append("@")
+ .append(widgetName).append("[id")
+ .append("=\'").append(prefix).append("']");
+ } else {
+ locatorBuilder.append("$").append(prefix);
+ }
}
if (prefix == null || prefix.length() == 0) {
@@ -74,7 +81,12 @@ public class AdempiereIdGenerator implements IdGenerator {
String id = parent.getId();
if (id != null && id.length() > 0) {
builder.insert(0, id+"_");
- locatorBuilder.insert(0, "$"+id+" ");
+ if (id.indexOf(" ") > 0) {
+ String widgetName = getWidgetName(parent.getWidgetClass());
+ locatorBuilder.insert(0, "@"+widgetName+"[id=\'"+id+"\'] ");
+ } else {
+ locatorBuilder.insert(0, "$"+id+" ");
+ }
} else {
String attribute = parent.getWidgetAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME);
if (attribute != null && attribute.length() > 0) {
@@ -162,7 +174,14 @@ public class AdempiereIdGenerator implements IdGenerator {
.append("=\'").append(attribute).append("']");
}
} else {
- locatorBuilder.append("$").append(prefix);
+ if (prefix.indexOf(" ") > 0) {
+ String widgetName = getWidgetName(comp.getWidgetClass());
+ locatorBuilder.append("@")
+ .append(widgetName).append("[id")
+ .append("=\'").append(prefix).append("']");
+ } else {
+ locatorBuilder.append("$").append(prefix);
+ }
}
if (prefix == null || prefix.length() == 0) {
@@ -175,7 +194,12 @@ public class AdempiereIdGenerator implements IdGenerator {
if (parent instanceof IdSpace) {
String id = parent.getId();
if (id != null && id.length() > 0) {
- locatorBuilder.insert(0, "$"+id+" ");
+ if (id.indexOf(" ") > 0) {
+ String widgetName = getWidgetName(parent.getWidgetClass());
+ locatorBuilder.insert(0, "@"+widgetName+"[id=\'"+id+"\'] ");
+ } else {
+ locatorBuilder.insert(0, "$"+id+" ");
+ }
} else {
String attribute = parent.getWidgetAttribute(AdempiereWebUI.WIDGET_INSTANCE_NAME);
if (attribute != null && attribute.length() > 0) {
diff --git a/org.idempiere.ui.zk.selenium/src/fitlibrary/zk/ZkFixture.java b/org.idempiere.ui.zk.selenium/src/fitlibrary/zk/ZkFixture.java
index 45186d604b..7b09fd36dc 100644
--- a/org.idempiere.ui.zk.selenium/src/fitlibrary/zk/ZkFixture.java
+++ b/org.idempiere.ui.zk.selenium/src/fitlibrary/zk/ZkFixture.java
@@ -47,6 +47,7 @@ public class ZkFixture extends SpiderFixture {
}
// --------- ComboBox ---------
+ @SimpleAction(wiki = "|''combobox''|zk locator|''selected value''|", tooltip = "Return current selected value")
public String comboboxSelectedValue(String locator) {
Widget widget = new Widget(locator);
return (String) widget.eval(webDriver, "getValue()");
@@ -88,6 +89,7 @@ public class ZkFixture extends SpiderFixture {
return false;
}
+ @SimpleAction(wiki= "|''combobox''|zk locator|''set text''|text|", tooltip = "Enter text into combobox and fire onChange event")
public boolean comboboxSetText(String locator, String text) {
Widget widget = new Widget(locator);
widget.execute(webDriver, "setValue('"+text+"', true)");
@@ -199,13 +201,22 @@ public class ZkFixture extends SpiderFixture {
}
}
+ @SimpleAction(wiki="|''focus''|xpath, id or other locator|", tooltip= "Set focus to a zk widget")
public void focus(String locator) {
Widget widget = new Widget(locator);
- widget.execute(webDriver, "focus()");
+ widget.execute(webDriver, "focus_(100)");
}
- protected String getEval(String script) {
- return String.valueOf(executeJavaScript("return ("+ script+");"));
+ @SimpleAction(wiki = "|''with widget''|zk locator|''execute''|command|", tooltip = "Execute zk widget command")
+ public void withWidgetExecute(String locator, String command) {
+ Widget widget = new Widget(locator);
+ widget.execute(webDriver, command);
+ }
+
+ @SimpleAction(wiki = "|''with widget''|zk locator|''eval''|command|", tooltip = "Execute zk widget command and return the result")
+ public Object withWidgetEval(String locator, String command) {
+ Widget widget = new Widget(locator);
+ return widget.eval(webDriver, command);
}
/**
@@ -214,13 +225,20 @@ public class ZkFixture extends SpiderFixture {
* and schedulers. The thread does not lose ownership of any monitors.
* @param millis the length of time to sleep in milliseconds.
*/
- protected void sleep(long millis) {
+ @SimpleAction(wiki = "|''sleep''|millisecond|", tooltip = "sleep")
+ public void sleep(long millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
}
}
+ protected String getEval(String script) {
+ return String.valueOf(executeJavaScript("return ("+ script+");"));
+ }
+
+
+
class ZkFinder implements Finder {
@Override
diff --git a/org.idempiere.ui.zk.selenium/src/org/idempiere/ui/zk/selenium/Widget.java b/org.idempiere.ui.zk.selenium/src/org/idempiere/ui/zk/selenium/Widget.java
index f617b9f221..c11f224e62 100644
--- a/org.idempiere.ui.zk.selenium/src/org/idempiere/ui/zk/selenium/Widget.java
+++ b/org.idempiere.ui.zk.selenium/src/org/idempiere/ui/zk/selenium/Widget.java
@@ -53,6 +53,7 @@ public class Widget extends By {
public void execute(WebDriver driver, String command) {
JavascriptExecutor executor = (JavascriptExecutor) driver;
StringBuilder builder = getWidgetLocatorScript(locator);
+ command = command.replace("'", "\\'");
builder.append(".").append(command).append(";");
executor.executeScript(builder.toString());
}
@@ -60,6 +61,7 @@ public class Widget extends By {
public Object eval(WebDriver driver, String command) {
JavascriptExecutor executor = (JavascriptExecutor) driver;
StringBuilder builder = getWidgetLocatorScript(locator);
+ command = command.replace("'", "\\'");
builder.insert(0, "return ");
builder.append(".").append(command).append(";");
return executor.executeScript(builder.toString());