diff --git a/test/pom.xml b/test/pom.xml
index dabd2c37a609b0b0d6507b3e285d8eedee2b62a7..1560a16a2479c20b25fe34b0607796fc66e16539 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -150,6 +150,12 @@ THE SOFTWARE.
org.jvnet.hudson
embedded-rhino-debugger
1.2
+
+
+ org.jvnet.hudson
+ htmlunit-core-js
+
+
diff --git a/test/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlElementUtil.java b/test/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlElementUtil.java
index c8d599b11f7e72673e0aa24185589fd68f0b2227..23372d6740385d1c529533cbc6f035b5636cff8a 100644
--- a/test/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlElementUtil.java
+++ b/test/src/main/java/com/gargoylesoftware/htmlunit/html/HtmlElementUtil.java
@@ -28,6 +28,9 @@ import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.WebClientUtil;
import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
/**
* {@link HtmlElement} helper methods.
@@ -58,4 +61,16 @@ public class HtmlElementUtil {
WebClientUtil.waitForJSExec(webClient);
}
}
+
+ /**
+ * Does the supplied element define the specified HTML "class" name.
+ * @param element The element to check.
+ * @param className The HTML "class" name to check for.
+ * @return {@code true} if the element defines the specified class, otherwise {@code false}.
+ */
+ public static boolean hasClassName(HtmlElement element, String className) {
+ String classAttribute = element.getAttribute("class");
+ Set classes = new HashSet<>(Arrays.asList(classAttribute.split(" ")));
+ return classes.contains(className);
+ }
}
diff --git a/test/src/main/java/org/jvnet/hudson/test/JenkinsRule.java b/test/src/main/java/org/jvnet/hudson/test/JenkinsRule.java
index c58951f490b02cb408a7d60f365cf85565a640b1..394555c489cd03b0698dcc1f92316e4d18ca2931 100644
--- a/test/src/main/java/org/jvnet/hudson/test/JenkinsRule.java
+++ b/test/src/main/java/org/jvnet/hudson/test/JenkinsRule.java
@@ -37,6 +37,7 @@ import com.gargoylesoftware.htmlunit.WebResponseListener;
import com.gargoylesoftware.htmlunit.html.DomNode;
import com.gargoylesoftware.htmlunit.html.HtmlButton;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlElementUtil;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlImage;
import com.gargoylesoftware.htmlunit.html.HtmlInput;
@@ -1341,9 +1342,12 @@ public class JenkinsRule implements TestRule, MethodRule, RootAction {
*/
public HtmlPage submit(HtmlForm form, String name) throws Exception {
for( HtmlElement e : form.getHtmlElementsByTagName("button")) {
- HtmlElement p = (HtmlElement)e.getParentNode().getParentNode();
- if(e instanceof HtmlButton && p.getAttribute("name").equals(name)) {
- return (HtmlPage)HtmlFormUtil.submit(form, (HtmlButton) e);
+ HtmlElement p = (HtmlElement)e.getParentNode().getParentNode();
+ if (p.getAttribute("name").equals(name) && HtmlElementUtil.hasClassName(p, "yui-submit-button")) {
+ // For YUI handled submit buttons, just do a click.
+ return (HtmlPage) HtmlElementUtil.click(e);
+ } else if (e.getAttribute("name").equals(name)) {
+ return (HtmlPage) HtmlFormUtil.submit(form, e);
}
}
throw new AssertionError("No such submit button with the name "+name);