Author: lfryc(a)redhat.com
Date: 2011-02-15 05:37:19 -0500 (Tue, 15 Feb 2011)
New Revision: 21654
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/AbstractComponentAttributes.java
Log:
AbstractComponentAttributes - repeat method invocation 3 times when attribute element not
found
Modified:
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/AbstractComponentAttributes.java
===================================================================
---
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/AbstractComponentAttributes.java 2011-02-15
10:04:00 UTC (rev 21653)
+++
modules/tests/metamer/trunk/ftest-source/src/main/java/org/richfaces/tests/metamer/ftest/AbstractComponentAttributes.java 2011-02-15
10:37:19 UTC (rev 21654)
@@ -30,6 +30,9 @@
import org.jboss.test.selenium.dom.Event;
import org.jboss.test.selenium.framework.AjaxSelenium;
import org.jboss.test.selenium.framework.AjaxSeleniumProxy;
+import org.jboss.test.selenium.interception.CommandContext;
+import org.jboss.test.selenium.interception.CommandInterceptionException;
+import org.jboss.test.selenium.interception.CommandInterceptor;
import org.jboss.test.selenium.locator.Attribute;
import org.jboss.test.selenium.locator.AttributeLocator;
import org.jboss.test.selenium.locator.ElementLocator;
@@ -39,7 +42,10 @@
import org.jboss.test.selenium.locator.reference.LocatorReference;
import org.jboss.test.selenium.locator.reference.ReferencedLocator;
import org.jboss.test.selenium.request.RequestType;
+import org.jboss.test.selenium.waiting.Wait;
+import com.thoughtworks.selenium.SeleniumException;
+
/**
* @author <a href="mailto:lfryc@redhat.com">Lukas Fryc</a>
* @version $Revision$
@@ -59,11 +65,11 @@
public <T extends ExtendedLocator<JQueryLocator>>
AbstractComponentAttributes(T root) {
this.root.setLocator(root);
}
-
+
public ExtendedLocator<JQueryLocator> getRoot() {
return root.getLocator();
}
-
+
public void setRoot(ExtendedLocator<JQueryLocator> root) {
this.root.setLocator(root);
}
@@ -77,6 +83,8 @@
}
protected void setProperty(String propertyName, Object value) {
+ selenium.getInterceptionProxy().registerInterceptor(new
RepeatForElementNotFound());
+
ExtendedLocator<JQueryLocator> locator =
propertyLocator.format(propertyName, "");
final AttributeLocator<?> typeLocator =
locator.getAttribute(Attribute.TYPE);
final ExtendedLocator<JQueryLocator> optionLocator =
locator.getChild(jq("option"));
@@ -115,6 +123,8 @@
}
applySelect(locator, valueAsString);
}
+
+
selenium.getInterceptionProxy().unregisterInterceptorType(RepeatForElementNotFound.class);
}
public void setRequestType(RequestType requestType) {
@@ -146,4 +156,25 @@
public void setOncomplete(String oncomplete) {
setProperty("oncomplete", oncomplete);
}
+
+ private class RepeatForElementNotFound implements CommandInterceptor {
+ @Override
+ public void intercept(CommandContext ctx) throws CommandInterceptionException {
+ for (int i = 1; i <= 3; i++) {
+ try {
+ ctx.invoke();
+ break;
+ } catch (SeleniumException e) {
+ if (i == 3) {
+ throw e;
+ }
+ if (e.getMessage().matches("ERROR: Element .* not found"))
{
+ Wait.waitAjax().timeout(500).interval(100).waitForTimeout();
+ continue;
+ }
+ throw e;
+ }
+ }
+ }
+ }
}
Show replies by date